我有一个WPF ComboBox,其中包含带有图像和名字的静态人员列表。我试图将选定的FirstName绑定到db表。我现在这样做的方式(显然是错误的)我只是绑定对象,因此写作:
System.Windows.Controls.ComboBoxItem
到我的数据库表。
如何从TextBlock.Text属性绑定所选ComboBoxItem中的FirstName?有没有办法在WPF中完全做到这一点?
<ComboBox Text="{Binding Path=FirstName}">
<ComboBoxItem>
<StackPanel Orientation="Horizontal" >
<Image Source="/Images/Alice.png" />
<TextBlock Text="Alice" />
</StackPanel>
</ComboBoxItem>
<ComboBoxItem>
<StackPanel Orientation="Horizontal">
<Image Source="/Images/Bob.png" />
<TextBlock Text="Bob" />
</StackPanel>
</ComboBoxItem>
</ComboBox>
我在按钮点击事件
上保存对db表的更改 private void SaveAndClose_Click(object sender, RoutedEventArgs e)
{
bindingView = (BindingListCollectionView)myCollection.View;
bindingView.CommitEdit();
db.SubmitChanges();
}
答案 0 :(得分:1)
您应该使用数据模板,而不是对组合框进行硬编码。然后,您应该使用SelectedValuePath根据项目中的FirstName属性选择值。然后,您可以绑定到文本框。
如果要直接绑定到xaml中的文本框,则需要命名该元素(x:Name =“myTextBox”)。然后,绑定你的组合框的SelectedValue,如下所示:SelectedValue =“{Binding ElementName =”myTextBox“,Path =”Text“}”。
一般来说,我不认为将组合框绑定到文本框是一个非常好的主意。