2016-07-25 2 views
0

Предположим, у меня есть Dictionary<string, string> и ComboBox, где элементы заполняются из коллекций, содержащих ключи к этому словарю. Как я могу привязать TextBlock к значению выбранного ключа?Как привязать TextBlock к записи словаря, где ключ указан привязкой?

<ComboBox ItemsSource="{Binding MyKeyCollection}"/> 

<TextBox Text={Binding //What do I put here? }/> 

ответ

0

Вот как связать данные в поле со списком -

<ComboBox ItemsSource="{Binding SomeCollection}"> 

     <ComboBox.ItemTemplate> 

      <DataTemplate> 

       <StackPanel Orientation="Horizontal"> 

        <TextBlock Text="{Binding Key}" 
           Margin="5"/> 
        <TextBlock Text="{Binding Value}" 
           Margin="5"/> 

       </StackPanel>         

      </DataTemplate> 

     </ComboBox.ItemTemplate> 

    </ComboBox> 

Стиль как вы хотите в DataTemplate

0

Чтобы достичь того, чего вы хотите, вы должны быть уверены, что ваш ViewModel Удерживает оба, KeyCollection и словарь. Вот моя интерпретация:

Предположим, у вас есть эта ViewModel:

public class DictVm 
    { 
     public Dictionary<string, string> MainDictionary { get; set; } 
     public ObservableCollection<string> MyKeyCollection{ get; set; } 
     public string SelectedKey{ get; set; } 

     private string _selectedDictValue; 
     public string SelectedDictValue { 
     get { 

      if (MainDictionary.TryGetValue(SelectedKey, _selectedDictValue)) 
       return _selectedDictValue; 
      return string.Empty; 
     } 
     set { _selectedDictValue = value; } } 
    } 

Вот ваш MainWindow застройщик:

private DictVm vm; 
    public MainWindow() 
    { 
     InitializeComponent(); 

     vm = new DictVm(); 
     DataContext = vm; 
    } 

Вот как я бы изменить XAML:

<ComboBox x:Name="MyCombo" ItemsSource="{Binding MyKeyCollection}" SelectedValue="{Binding SelectedKey}"/> 

<TextBox Text="{Binding SelectedDictValue}"/> 
Смежные вопросы