MVVM WPF Datagrid TemplateColumn组合框选定项不起作用

时间:2016-03-17 17:54:30

标签: c# wpf xaml mvvm datagrid

我正在尝试使用带有WPF的MVVM模式将一些数据绑定到数据网格。我已经确认数据网格正在填充,实际上,填充了特定值(Gender)。我也尝试了我在网上找到的每一个解决方案(包括本网站上的其他问题),这就是我在这里寻找答案的原因。

<DataGridTemplateColumn Header="Gender" >
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <ComboBox ItemsSource="{Binding Genders}"  SelectedItem="{Binding Gender, UpdateSourceTrigger=PropertyChanged}" IsSynchronizedWithCurrentItem="True">
            </ComboBox>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

我尝试的东西:Mode = TwoWay,UpdateSourceTrigger = PropertyChanged“,IsSynchronizedWithCurrentItem =”True“。虽然,我不是一个超级经验丰富的WPF和MVVM程序员,所以它可能是一些简单的我不知道我的模型似乎在其他地方工作,它们实现了可观察的/可观察的集合。

编辑:我把它整理好了。以下是适用于我的问题的代码(如果其他人有类似的问题)。

<DataGridTemplateColumn Header="Gender" >
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <ComboBox ItemsSource="{Binding Path=DataContext.Genders, RelativeSource={RelativeSource FindAncestor, AncestorType = Window}}" SelectedItem="{Binding Gender, UpdateSourceTrigger=PropertyChanged}">
            </ComboBox>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

1 个答案:

答案 0 :(得分:0)

假设DataGrid的DataContext是Patient对象,请尝试使用RelativeSource绑定指向DataGrid:

<DataGridTemplateColumn Header="Gender" >
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <ComboBox ItemsSource="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid}, Path=DataContext.Genders}"
                      SelectedItem="{Binding Gender, UpdateSourceTrigger=PropertyChanged}"
                      IsSynchronizedWithCurrentItem="True">
            </ComboBox>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>