Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF DataGrid组合框SelectedItem属性设置器_C#_Wpf_Xaml_Datagrid_Combobox - Fatal编程技术网

C# WPF DataGrid组合框SelectedItem属性设置器

C# WPF DataGrid组合框SelectedItem属性设置器,c#,wpf,xaml,datagrid,combobox,C#,Wpf,Xaml,Datagrid,Combobox,我正在寻找一个如何在WPF数据网格中的组合框内使用SelectedItem属性的示例,我有 <DataGridComboBoxColumn SelectedValueBinding="{Binding CID, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" SelectedValuePath="CID" Header="CID"

我正在寻找一个如何在WPF数据网格中的组合框内使用SelectedItem属性的示例,我有

<DataGridComboBoxColumn SelectedValueBinding="{Binding CID, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" 
                        SelectedValuePath="CID"  
                        Header="CID" 
                        Width="70">
        <DataGridComboBoxColumn.EditingElementStyle>
            <Style TargetType="ComboBox">
                <Setter Property="ItemsSource" Value="{Binding DataContext.ListCustomerCollection, 
                  RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}}"/>
                <Setter Property="DisplayMemberPath" Value="Name"/>
                <Setter Property="SelectedItem" Value="{Binding DataContext.Customer, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=Window}}"></Setter> 
            </Style>
        </DataGridComboBoxColumn.EditingElementStyle>
        <DataGridComboBoxColumn.ElementStyle>
            <Style TargetType="ComboBox">
                <Setter Property="ItemsSource" Value="{Binding DataContext.ListCustomerCollection, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}}"/>
                <Setter Property="DisplayMemberPath" Value="Name"/>
                <Setter Property="HorizontalAlignment" Value="Center"></Setter>
                <Setter Property="SelectedItem" Value="{Binding DataContext.Customer, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=Window}}"></Setter>
            </Style>
        </DataGridComboBoxColumn.ElementStyle>

那么如何编写XAML以使用SelectedItem设置上述属性呢?

如果属性位于窗口的ViewModel中,则必须像获取ItemsSource一样获取窗口的DataContext

<Setter Property="SelectedItem"
        Value="{Binding DataContext.Customer,
                        RelativeSource={RelativeSource Mode=FindAncestor, 
                                                 AncestorType=Window}}"/>


您是否设置了
SelectedValue
SelectedItem
SelectedIndex
属性集
DisplayMemberPath
仅设置用于在组合框中显示项目的值,而不用于所选项目Hi Rachel,我将发布上面的所有XAML,谢谢,它将是SelectedItem,但是,由于这会导致问题,我不介意选择组合的SelectedValue,我只需要值backHi Rohit,属性现在已设置,谢谢,但值不再显示在组合框中(出现错误)我已经发布了上述XAML的其余部分,因为我收集了其中的其他代码,如果您已经有了
SelectedValueBinding
为什么还需要
SelectedItem
?事实上,您已经解决了这个问题,我已经将上面的代码放在EditingElementStyle标记中,并且答对了!我明白你的意思,但我无法访问ViewModel中的SelectedValueBinding,我该怎么做?实际上,问题是你不能将
SelectedValue
SelectedItem
绑定到两个完全不同的属性
CID
属性驻留在模型中,那么您需要的任何代码都应该存在于模型中。为什么您的ViewModel需要了解它?如果您仍然需要它,您必须以某种方式获取DataGrid选定行并获取其模型,从中可以获取
CID
值。
private Customer m_Customer = null;
public Customer Customer
{
    get { return m_Customer; }
    set
    {
        m_Customer = value;
        OnPropertyChanged("Customer");
    }
}
<Setter Property="SelectedItem"
        Value="{Binding DataContext.Customer,
                        RelativeSource={RelativeSource Mode=FindAncestor, 
                                                 AncestorType=Window}}"/>