绑定文本ComboBoxItem的子元素的属性

时间:2012-01-09 19:06:35

标签: wpf binding combobox

我有一个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();
    }

1 个答案:

答案 0 :(得分:1)

您应该使用数据模板,而不是对组合框进行硬编码。然后,您应该使用SelectedValuePath根据项目中的FirstName属性选择值。然后,您可以绑定到文本框。

如果要直接绑定到xaml中的文本框,则需要命名该元素(x:Name =“myTextBox”)。然后,绑定你的组合框的SelectedValue,如下所示:SelectedValue =“{Binding ElementName =”myTextBox“,Path =”Text“}”。

一般来说,我不认为将组合框绑定到文本框是一个非常好的主意。