绑定DataGrid TextBox基于Checkbox属性启用

时间:2013-08-26 11:30:46

标签: c# wpf datagrid textbox

我有一个带Checkbox的DataGrid&其他文本框。

   <DataGrid AutoGenerateColumns="False" Height="170" Name="dataGrid1" Width="527"  OpacityMask="#FF161A1A" BorderBrush="#FFB7B39D" Background="LightYellow" RowBackground="LightGray" AlternatingRowBackground="#FFFFFFF5" BorderThickness="10" CanUserResizeRows="False" CanUserReorderColumns="False" CanUserResizeColumns="True" CanUserSortColumns="False" FontFamily="Segoe UI" FontSize="13" CanUserAddRows="False">

       <DataGrid.Columns>
            <DataGridCheckBoxColumn Header="" Binding="{Binding BoolProperty, Mode=TwoWay}" />
            <DataGridTextColumn Header="" Binding="{Binding header}" MinWidth="108" IsReadOnly="True" />
            <DataGridTextColumn Header="Number of Cases" Binding="{Binding cases}" >
            <DataGridTextColumn.EditingElementStyle>
                  <Style TargetType="TextBox">
                        <Setter Property="IsEnabled" Value="{Binding Path=BoolProperty, Mode=TwoWay}" />
                 </Style>
           </DataGridTextColumn.EditingElementStyle>
          </DataGridTextColumn>

checkboxcolumn绑定到“BoolProperty”。我想要的是如果BoolProperty为false则禁用Textbox“Number of Cases”,如果BoolProperty为true则启用。我尝试在TExtBox中添加IsEnabled,但它不起作用。我哪里错了?

2 个答案:

答案 0 :(得分:1)

对于仅XAML方法,请改用模板列。 IsReadOnly isn't bindable at the cell level。由于该链接不提供实现,我将。

<DataGridTemplateColumn>
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Path=myProperty}" />
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
    <DataGridTemplateColumn.CellEditingTemplate>
        <DataTemplate>
            <TextBox IsEnabled="{Binding Path=myBool}" Text="{Binding Path=myProperty, Mode=TwoWay}" />
        </DataTemplate>
    </DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>

答案 1 :(得分:0)

我在一个项目中使用了LoadingRow的{​​{1}}事件来检查具体状态。也许这样的事情可能有所帮助:

DataGrid

在您的情况下,您可以在if-else构造中启用/禁用您的单元格。

希望它有所帮助。