2010-06-25 33 views
0

我有一个int词典到char(其中,INT相关十进制& ASCII字符)。我想要有两个可编辑的组合框,它们是用初始值预先填充的。如果用户选择了从组合框“A”(在字典密钥)的值我想在组合框“B”被填充的dict值 - 并且反之亦然。绑定2组合框的词典,则组合框彼此结合

这是比较容易预先填充的初始值到组合框“A” &“B”。这是双重绑定,难倒我。

这里是VM其中I填充词典:

private void InitializeSpearatorsDictionaries() 
    { 
     // comma, semicolon, vertical pipe, tilda 
     int[] fields = { 44, 59, 124, 126 }; 
     foreach (int f in fields) 
     { 
      FieldDict.Add(f, Convert.ToChar(f)); 
     } 
    } 
    public IDictionary<int, char> FieldDict 
    { 
     get 
     { 
      if (_fieldDict == null) 
      { 
       _fieldDict = new Dictionary<int, char>(); 
      } 
      return _fieldDict; 
     } 
    } 

这里是初始XAML其中I结合到词典(静止,没有问题)

<StackPanel> 
<ComboBox x:Name="cbFieldChar" ItemsSource="{Binding Path=FieldDict}" SelectedIndex="0" DisplayMemberPath="Key" SelectedValuePath="Value" IsEditable="True" /> 
<ComboBox x:Name="cbFieldDecimal" ItemsSource="{Binding Path=FieldDict}" SelectedIndex="0" DisplayMemberPath="Value" SelectedValuePath="Key" IsEditable="True" /> 
</StackPanel> 

最初,我有的ItemsSource = {绑定路径= FIeldDict.Keys}和{绑定路径= FieldDict.Values},在这种情况下,我并不需要的DisplayMemberPath和SelectedValuePath属性,而是试图让两路工作,我重新设计它(这两种方法与字典的初始加载一起工作)。

这里是在获得两个组合框之间的双向的最新尝试工作

<StackPanel> 
<ComboBox x:Name="cbFieldChar" ItemsSource="{Binding Path=FieldDict}" SelectedIndex="0" DisplayMemberPath="Key" SelectedValuePath="Value" IsEditable="True" /> 
<ComboBox x:Name="cbFieldDecimal" ItemsSource="{Binding Path=FieldDict}" SelectedIndex="0" DisplayMemberPath="Value" SelectedValuePath="Key" IsEditable="True" SelectedValue="{Binding ElementName=cbFieldChar, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, Path=ItemsSource.Value}" /> 
</StackPanel> 

任何想法?
在此先感谢,
- ED

回答

0

我觉得它的一部分。下面的工作将使两个ComboBoxes与它们中已经存在的值同步。

<ComboBox x:Name="cbFieldChar" ItemsSource="{Binding Path=FieldDict}" SelectedIndex="0" DisplayMemberPath="Value" SelectedValuePath="Key" IsEditable="True" /> 
<ComboBox x:Name="cbFieldDecimal" ItemsSource="{Binding Path=FieldDict}" SelectedIndex="0" DisplayMemberPath="Key" SelectedValuePath="Value" IsEditable="True" SelectedValue="{Binding ElementName=cbFieldChar, Path=SelectedValue}" /> 

我想尝试使用ValueConverter来获得可编辑的方面。