在wpf中访问数据网格内的组合框属性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在wpf中访问数据网格内的组合框属性相关的知识,希望对你有一定的参考价值。

我有一个数据网格,在wpf中有四列组合框。在开始时,启用第一个组合框。在第一个组合框上进行选择后,第二个组合框将启用。我无法访问我的xaml.cs文件中的组合框名称属性,因此我可以在成功选择第一个组合框后启用下一个组合框列。你能建议如何访问我的xaml.cs文件中数据网格内存在的组合框属性吗?

这是我的xaml代码

<DataGridTemplateColumn     
    Header ="Example 9">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <ComboBox ItemsSource="{Binding PartIds, RelativeSource={RelativeSource AncestorType=Window}}" SelectedItem ="{Binding PartId,UpdateSourceTrigger=PropertyChanged}" />
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
答案

假设DataGrid中有两列,第一列包含combobox,其selecteditem绑定到名为PartId的属性,第二列包含comboboxselecteditem绑定到名为PartId2的属性,您的模型应该看起来像那:

public class Model
{
    public string PartId { get; set; }
    public string PartId2 { get; set; }
}

现在,假设你的DataGriditemsource与一个名为ObservableCollectionDgCollection绑定:

 private ObservableCollection<Model> _dgCollection;
 public ObservableCollection<Model> DgCollection
    {
        get { return _dgCollection; }
        set
        {
            if (Equals(value, _dgCollection)) return;
            _dgCollection = value;
            OnPropertyChanged();
        }
    }

一旦第一列的DataTrigger被设置,第二列可以使用combobox激活其selecteditem,如下所示:

<DataGrid ItemsSource="{Binding DgCollection}" AutoGenerateColumns="False">
    <DataGrid.Columns>
        <DataGridTemplateColumn     
    Header ="Example 9">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <ComboBox ItemsSource="{Binding PartIds, RelativeSource={RelativeSource AncestorType=Window}}" SelectedItem ="{Binding PartId,UpdateSourceTrigger=PropertyChanged}" />
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
        <DataGridTemplateColumn     
            Header ="Example 10">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <ComboBox x:Name="FirstCbx" ItemsSource="{Binding PartIds, RelativeSource={RelativeSource AncestorType=Window}}" SelectedItem ="{Binding PartId2,UpdateSourceTrigger=PropertyChanged}" >
                        <ComboBox.Style>
                            <Style TargetType="ComboBox">
                                <Setter Property="IsEnabled" Value="True"/>
                                <Style.Triggers>
                                    <DataTrigger Binding="{Binding PartId}" Value="{x:Null}">
                                        <Setter Property="IsEnabled" Value="False"/>
                                    </DataTrigger>
                                </Style.Triggers>
                            </Style>
                        </ComboBox.Style>
                    </ComboBox>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>

您可以轻松地将其概括为四列。

以上是关于在wpf中访问数据网格内的组合框属性的主要内容,如果未能解决你的问题,请参考以下文章

将枚举属性数据绑定到 WPF 中的组合框

MVVM WPF ComboBox SelectedItem 绑定未在数据网格内激活

选择组合框时设置文本框的属性 WPF XAML

DataGrid 数据绑定/更新中的 WPF 组合框不起作用

使用工具提示 WPF 在数据网格中填充组合框

如何在双向绑定组合框(WPF)上调用异步操作