c#数据绑定通过后面的代码不工作在文本框中的文本属性

本文关键字:文本 工作 属性 代码 数据绑定 | 更新日期: 2023-09-27 18:10:44

我有一个带有xaml标记的文本框,像这样:
<TextBox x:Name="txtHN" Text="{Binding Path=AN}"/>

上面的代码工作得很好。但是当我将数据绑定实现从XAML更改为代码隐藏时,它就不再工作了。下面的代码不再工作了:

Binding textHnBinding = new Binding();
textHnBinding.Path = new PropertyPath("AN");
txtHN.SetBinding(TextBox.TextProperty, textHnBinding);

我已经将textbox.datacontext设置为相同的collectionviewsource,但代码隐藏版本不再工作了。我真的不知道罪魁祸首是什么。

我对CVS.source使用以下代码:

                IEnumerable<decimal> ANListWard4 = (from s in context.IPDAN
                                                    where ward.Contains(s.CURRENTWARD)
                                                    select s.AN).Distinct().OrderBy(n => n);
                List<IPDAN> Ward4AN = new List<IPDAN>();
                foreach (decimal d in ANListWard4)
                {
                    IPDAN ward4AN1 = new IPDAN();
                    ward4AN1.AN = d;
                    Ward4AN.Add(ward4AN1);
                }

设置CVS。来源:Ward4AN。不存在Ward4AN为空或没有数据的实例。

c#数据绑定通过后面的代码不工作在文本框中的文本属性

在进行绑定时检查collectionViewSource是否为空。如果在添加绑定时对象为空,则绑定可能无法工作。

还可以检查在加载事件中是否有效

你可以试试:

Binding textHnBinding = new Binding("AN");
txtHN.SetBinding(TextBox.TextProperty, textHnBinding);

这就是我所做的所有绑定,所以我认为它应该可以工作。

编辑:

很长时间没有使用绑定,所以如果我又错了,我道歉:

Binding textHnBinding = new Binding("AN");
FrameworkElementFactory textHN = new FrameworkElementFactory(typeof(TextBox));
txtHN.SetBinding(TextBox.TextProperty, textHnBinding);

你可以尝试实例化你的控制像这样,而不是在Xaml检查它是否会工作(像我一样)?谢谢你。