2014-08-28 31 views
2

我在WPF窗口中綁定了一個XML文檔。該XML文檔看起來是這樣的:組合框的xml綁定無法識別SelectedItem

<root> 
    <common> 
    ... more stuff 
    <logSeverityLevel>Debug</logSeverityLevel> 
    ... 
    </common> 
    <collections> 
    <logSeverityLevels> 
     <logSeverityLevel>Debug</logSeverityLevel> 
     <logSeverityLevel>Info</logSeverityLevel> 
     <logSeverityLevel>Trace</logSeverityLevel> 
     <logSeverityLevel>Error</logSeverityLevel> 
     <logSeverityLevel>Fatal</logSeverityLevel> 
    </logSeverityLevels> 
    </collections> 
</root> 

而且綁定:

<WrapPanel FlowDirection="LeftToRight" DataContext="{Binding XPath=/root/common}"> 

    <DockPanel> 
     <TextBlock Text="Log Severity Level : " /> 
     <ComboBox SelectedItem="{Binding XPath=logSeverityLevel}" ItemsSource="{Binding XPath=/root/collections/logSeverityLevels/*}" /> 
    </DockPanel> 
</WrapPanel> 

現在,當我運行該程序,我可以看到ComboBox是越來越填入可能的項目。但它不會將Debug設置爲選定值。該怎麼辦?

回答

2

儘量設置SelectedValuePathDisplayMemberPathComboBox

<ComboBox SelectedIndex="0" 
      SelectedValuePath="@logSeverityLevel" 
      DisplayMemberPath="@logSeverityLevel" ... /> 

這是我的例子:

XAML

<Window.Resources> 
    <XmlDataProvider x:Key="Data" XPath="Response/Contact"> 
     <x:XData> 
      <Response xmlns=""> 
       <Contact Name="Bart" /> 
       <Contact Name="Eric" /> 
      </Response> 
     </x:XData> 
    </XmlDataProvider> 
</Window.Resources> 

<ComboBox SelectedIndex="0" 
      SelectedValuePath="@Name" 
      DisplayMemberPath="@Name" 
      ItemsSource="{Binding Source={StaticResource Data}}" 
      Width="100" Height="30"    
      SelectionChanged="ComboBox_SelectionChanged" /> 

Code behind

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
    } 

    private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     var comboBox = sender as ComboBox; 
     MessageBox.Show(comboBox.SelectedValue.ToString()); 
    } 
} 

沒有SelectedValuePath SelectedValue將爲空。