2010-06-25 54 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來獲得可編輯的方面。