2014-08-28 4 views
2

WPF 창에서 XML 문서를 바인딩합니다.ComboBox에 대한 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> 

을 그리고 바인딩 :은 XML 문서는 다음과 같습니다

<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

ComboBox에 대한 SelectedValuePathDisplayMemberPath을 설정 시도해보십시오

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()); 
    } 
} 
,369 :

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

이 내 예입니다

없이 SelectedValuePath SelectedValue는 비어 있습니다.

관련 문제