簡體   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