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

问题描述 投票:0回答:1

我有一个数据网格,在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>
wpf combobox datagrid
1个回答
0
投票

假设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>

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

© www.soinside.com 2019 - 2024. All rights reserved.