[英]How to get access to a binding to a WPF Binding on C# CodeBehind level
[英]XMLDataprovider label binding codebehind WPF c#
我正在处理WPF应用程序。 我使用xml文件设置了多语言,并且在前面的代码中使用了静态资源绑定来设置相应的文本。 我的问题是在后面的代码中做同样的事情。
在这里,您可以看到我如何在前面的代码中使用它:
<XmlDataProvider x:Key="Lang" Source="/lng/english.xml" XPath="WpfApplication"/>
<Label HorizontalAlignment="Center" Margin="0,10,0,5" Foreground="White" FontWeight="Bold" Content="{Binding Source={StaticResource Lang}, XPath=MenuTextClimate/@Header}"></Label>
我试图像这样在代码隐藏中做同样的事情:
String selLangFullPath = WpfLibrary.LanguageOptions.getSelLangFullPath();
XmlDataProvider xmlData = (XmlDataProvider)(this.FindResource("Lang"));
xmlData.Source = new Uri(selLangFullPath, UriKind.Relative);
xmlData.XPath = "MenuTextClimate/@Header";
Binding NewBinding = new Binding();
NewBinding.Source = xmlData;
NewBinding.Mode = BindingMode.OneWay;
NewBinding.XPath = "MenuTextClimate";
lblTitle.SetBinding(Label.ContentProperty, NewBinding);
但由于某种原因,它确实起作用了。 谁能告诉我我哪里出问题了?
提前致谢。
您所显示的代码实际上并没有做同样的事情。 它在三个方面有所不同:
问题可能仅仅是这些东西中的任何一个或全部是错误的。 (XPath看起来特别可疑,因为它们看起来好像假定了一个完全不同的XML文档结构。尽管由于您还提供了一个不同的XML文档,所以也许还可以。从目前提供的信息中看不出来。)我要做的第一件事是尝试使您的C#与Xaml完全相同-相同的URI和相同的XPath。 如果这样可行,那么应该更容易了解导致问题的三件事中哪一项不同。
或者,启用WPF调试输出。 如果您使用的是.NET 3.5 sp1或更早版本,则通常默认情况下启用此级别,以记录数据绑定消息的错误级别。 (数据绑定错误出现在“输出”窗口中。)从.NET 4.0开始,Microsoft拒绝了它,因此除非您提出要求,否则您将看不到它。 您可以使用Visual Studio中的“选项”对话框将其打开,它位于“调试”->“输出窗口”下。 确保将数据绑定设置为显示错误。 或者,有关更多详细信息,请将其完全启动,然后通过添加以下内容来启用完整日志记录:
PresentationTraceSources.SetTraceLevel(NewBinding, PresentationTraceLevel.High);
那应该向您显示有关数据绑定正在试图与绑定进行连接的详细信息,并且这通常是找出为什么事情不起作用的一种很好的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.