我有一个带有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
设置为相同的collectionsviewsource,但代码隐藏版本不再适用。我真的不知道什么是罪魁祸首。
我将以下代码用于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.Source设置为Ward4AN。没有Ward4AN为null或没有数据的实例。
答案 0 :(得分:0)
你可以尝试:
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);
你能尝试像这样实例化你的Control,而不是在Xaml中检查它是否会起作用(就像我一样)?谢谢。
答案 1 :(得分:0)
在进行绑定时检查collectionViewSource是否为null。如果在添加绑定时对象为null,则绑定可能不起作用。
同时检查加载的事件是否有效。