假设我有一个Dictionary<string, string>
和一个ComboBox
,其中的项目是从包含该词典键的集合中填充的。
如何将TextBlock
绑定到所选键的值?
<ComboBox ItemsSource="{Binding MyKeyCollection}"/>
<TextBox Text={Binding //What do I put here? }/>
答案 0 :(得分: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中按照您的意愿设置样式
答案 1 :(得分: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}"/>