根据不同的列值禁用DataGrid中的按钮

时间:2012-08-17 08:00:22

标签: .net wpf xaml datagrid triggers

我有以下代码:

    <DataGridTextColumn IsReadOnly="True" Header="StringLock" Binding="{Binding StringLock}">
                <DataGridTextColumn.ElementStyle>
                    <Style TargetType="{x:Type TextBlock}">
                        <Style.Triggers>
                            <Trigger Property="Text" Value="False">
                                <Setter Property="Background" Value="LightGray"/>
                            </Trigger>
                        </Style.Triggers>
                    </Style>
                </DataGridTextColumn.ElementStyle>
            </DataGridTextColumn>
            <DataGridTemplateColumn Header="CanPressButton">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <Button>Lock module string</Button>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>

StringLock列Background属性的颜色为LightGray,如果它包含的Text值为False。

我想禁用CanPressButton列中的按钮,如果StringLock列中Text的值为False。

我该怎么做?

1 个答案:

答案 0 :(得分:3)

您可以使用完整的DataContext(即行项目)来触发:

<Button.Style>
     <Style TargetType="Button">
         <Style.Triggers>
             <DataTrigger Binding="{Binding StringLock}" Value="False">
                 <Setter Property="IsEnabled" Value="False"/>
             </DataTrigger>
         </Style.Triggers>
     </Style>
</Button.Style>