2013-04-02 70 views
3

我有一個ComboBox,它列出了下面顯示的聯繫方法。 ComboBox顯示正確的值,因此ItemSource綁定正在工作。在WPF XPath表達式中篩選

我想要存檔的是在應用程序啓動時顯示選定的聯繫方式。我試圖將選定的值綁定到ComboBox.Text屬性,但我無法弄清楚如何設置過濾器。

這是我的輸入數據:

<Contact ShowsInterest="true"> 
    <Name>Tester</Name> 
    <Lastname>Test</Lastname> 
    <ContactMethods> 
    <ContactMethod Selected="False">Phone</ContactMethod> 
    <ContactMethod Selected="False">Email</ContactMethod> 
    <ContactMethod Selected="True">Letter</ContactMethod> 
    <ContactMethod Selected="False">Mobile</ContactMethod> 
    </ContactMethods> 
</Contact> 

這是我ComboBox

<ComboBox Name="combobox1" 
      ItemsSource="{Binding XPath=Contact/ContactMethods//*}" 
      Width="100" Height="25"> 
    <ComboBox.Text> 
     <Binding XPath="Contact/ContactMethods//*[@Selected='true']"/> 
    </ComboBox.Text> 
</ComboBox> 

XPath表達式應該做到以下幾點:顯示元素下,在選擇時等於真正聯繫/ ContactMethods /。

編輯: 即使直接設置文本屬性將不起作用。

<ComboBox Name="combobox1" 
      ItemsSource="{Binding XPath=Contact/ContactMethods//*}" 
      Width="100" Height="25"> 
    <ComboBox.Text> 
     Phone 
    </ComboBox.Text> 
</ComboBox> 

我想我必須使用SelectedValue物業:

<ComboBox Name="combobox1" 
      ItemsSource="{Binding XPath=Contact/ContactMethods//*}" 
      Width="100" Height="25"> 
    <ComboBox.SelectedValue> 
     Phone 
    </ComboBox.SelectedValue> 
</ComboBox> 

EDIT2: 這是可行的解決方案,這要歸功於MikroDel

<ComboBox Name="combobox1" 
      ItemsSource="{Binding XPath=Contact/ContactMethods//*}" 
      Width="100" Height="25"> 
    <ComboBox.SelectedValue> 
     <Binding XPath="Contact/ContactMethods/ContactMethod[@Selected='True']"/> 
    </ComboBox.SelectedValue> 
</ComboBox> 

回答

2

這是正確的:

<Binding XPath="Contact/ContactMethods/ContactMethod[@Selected='True']"/> 
+1

+1您注意到的好點:-) –

+0

@HosseinNarimaniRad謝謝) – MikroDel