【问题标题】:Binding a ComboBox's SelectedItem or SelectedValue which resides inside a DataGrid绑定位于 DataGrid 内的 ComboBox 的 SelectedItem 或 SelectedValue
【发布时间】:2014-05-26 09:32:28
【问题描述】:

我有一个数据网格。让它有两列 name 和 Gender :

<DataGrid............>
    <DataGridTemplateColumn Header="Name">
        <DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
                <TextBox Text="{Binding Name, RelativeSource.........}" />
            </DataTemplate>
        </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>
    <DataGridTemplateColumn Header="Age">
        <DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
                <ComboBox SelectedItem="{Binding Selected, RelativeSource.........}" >
                    <sys:String> Male </sys:String>
                    <sys:String> Female </sys:String>
                </ComboBox>
            </DataTemplate>
        </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>
</DataGrid>

现在当我运行程序时,假设我在 DataGrid 中有 5 行,那么当我在任何行中选择男性时,例如第 3 行,然后所有组合框的 SelectedItem 变为 Male。我怎样才能避免这种情况?

当我的程序运行时,我只有 1 行,但是当我添加更多行时,它看起来像:

当我尝试在任何 ComboBox 中选择女性时:

当我在任何 ComboBox 中选择女性时:

我知道我的绑定不正确,所以我遇到了这样的问题,但是谁能解释一下 DataGrid 中 ComboBox 的 SelectedItem 绑定?

【问题讨论】:

  • DataGrid 是一个控件。
  • 你能展示SelectedItem绑定的完整定义吗? DataGrid 的ItemsSource 是什么?
  • Selected 属性位于何处?
  • @RohitVats Selected 属性位于GroupsViewModel
  • 因此,您正在绑定具有相同属性的所有行。如果您希望为所有行单独设置它,则应该与基础源中的属性绑定。

标签: c# wpf xaml datagrid combobox


【解决方案1】:

由于您尝试绑定 List 并且您将 ComboBoxItem 对象作为项目。像这样设置你的 ComboBox SelectedValuePath="Content"

 <ComboBox SelectedValuePath="Content" ....... >
                    <sys:String> Male </sys:String>
                    <sys:String> Female </sys:String>
  </ComboBox>

【讨论】:

    猜你喜欢
    • 2012-06-23
    • 2021-07-07
    • 2014-10-10
    • 2011-11-24
    • 1970-01-01
    • 1970-01-01
    • 2010-10-14
    • 2019-11-10
    • 2023-04-03
    相关资源
    最近更新 更多