繁体   English   中英

WPF c#背后的XMLDataprovider标签绑定代码

[英]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);

但由于某种原因,它确实起作用了。 谁能告诉我我哪里出问题了?

提前致谢。

您所显示的代码实际上并没有做同样的事情。 它在三个方面有所不同:

  1. 您正在更改XmlDataProvider的Source属性
  2. 您正在为XmlDataProvider提供不同的XPath(MenuTextClimate / @ Header而不是WpfApplication)。
  3. 您还将在绑定表达式中提供其他XPath。

问题可能仅仅是这些东西中的任何一个或全部是错误的。 (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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM