如何基于同一触发器设置数据网格的多个单元格的样式



>我有一个简单的DataGrid,里面有一列文本,一列有复选框,根据一些相当复杂的条件,我想设置文本的样式并设置或禁用复选框。我可以为两个单元格实现相同的触发器,但这似乎很膨胀且不必要,我正在寻找最有效的方法来做到这一点。似乎应该有可能,我只是完全不知所措。

        <DataGrid>
            <DataGrid.Columns>
                <DataGridTemplateColumn>
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <Label Name="needToStyleThis" VerticalAlignment="Center"/>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
                <DataGridTemplateColumn Header="" Width="Auto">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <CheckBox x:Name="needToSetIsChecked"/>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
            </DataGrid.Columns>
        </DataGrid>

这通常通过数据绑定来实现。如果将 bool 属性添加到数据类,则可以在该类的属性资源库中执行复杂的条件。在类中,您可以轻松更改依赖于任何其他值的任何属性值。也许是这样的:

public string Text
{
    get { return text; }
    set 
    {
        text = value;
        NotifyPropertyChanged("Text");
        IsEnabled = text == "some value" && otherSomeConditions == true;
    }
}

然后,您可以像这样将其数据绑定到 Checkbox.IsEnabled 属性:

<DataGrid>
    <DataGrid.Columns>
        <DataGridTemplateColumn>
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <Label Name="needToStyleThis" VerticalAlignment="Center"/>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
        <DataGridTemplateColumn Header="" Width="Auto">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <CheckBox IsEnabled="{Binding IsEnabled}" ... />
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>

相关内容

  • 没有找到相关文章

最新更新