Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过代码隐藏进行的C#数据绑定不';文本框中的文本属性无效_C#_Wpf_Xaml_Data Binding - Fatal编程技术网

通过代码隐藏进行的C#数据绑定不';文本框中的文本属性无效

通过代码隐藏进行的C#数据绑定不';文本框中的文本属性无效,c#,wpf,xaml,data-binding,C#,Wpf,Xaml,Data Binding,我有一个带有xaml标记的文本框,如下所示: 上面的代码工作得非常好。但是,当我将数据绑定实现从XAML更改为代码隐藏时,它就不再工作了。以下隐藏代码不再工作: Binding textHnBinding = new Binding(); textHnBinding.Path = new PropertyPath("AN"); txtHN.SetBinding(TextBox.TextProperty, textHnBinding); 我已经将textbox.datacontext设置为相同

我有一个带有xaml标记的文本框,如下所示:

上面的代码工作得非常好。但是,当我将数据绑定实现从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);
                }
IEnumerable ANListWard4=(来自context.IPDAN中的s
其中病房包含(s.CURRENTWARD)
选择s.AN).Distinct().OrderBy(n=>n);
List Ward4AN=新列表();
foreach(第4行中的十进制d)
{
IPDAN ward4AN1=新IPDAN();
ward4AN1.AN=d;
Ward4AN.Add(ward4AN1);
}
我将CVS.Source设置为Ward4AN。没有Ward4AN为空或没有数据的实例

你能试试吗:

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中检查它是否能正常工作吗(就像我一样)?谢谢。

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


还要检查在已加载事件中它是否工作。

collectionviewsource是否将文本框的文本转换为文本?您可以共享CollectionViewSource的示例数据吗?您在哪里有要设置绑定的代码(在哪种情况下)?您必须分享有关
textbox.DataContext
的更多详细信息,这可能是问题所在。在输出窗口中是否有绑定错误?这可能看起来很奇怪,但我设置使用文本框作为另一个Linq查询链接到第二个CVS的参数源。我不想使用列表框,因为它比文本框占用更多的空间。我已经检查了输出窗口。它有这样一行:System.Windows.Data信息:10:无法使用绑定检索值,并且不存在有效的回退值;改为使用默认值。BindingExpression:Path=AN;DataItem=null;目标元素是“TextBox”(Name='txtHN');目标属性为“Text”(类型为“String”)是,如果您在c#中实例化它,或者更改名称。别忘了将新的文本框(由代码创建)添加到框架中。