在我的 DataGrid 中,我有一个文本列,它的标题中有一个复选框。
<DataGridTextColumn Binding="{Binding Path=value1}" >
<DataGridTextColumn.Header>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="1" Text="Value1" IsEnabled="{Binding Value1Checked}" />
<CheckBox Name="chkValue1" Grid.Column="0" Width="16" IsChecked="{Binding Path=Value1Checked, Mode=TwoWay}" />
</Grid>
</DataGridTextColumn.Header>
</DataGridTextColumn>
我想将复选框值与文本框绑定 - 如果选中了复选框,则只有用户可以在文本框中输入值。在我后面的代码中,我有:
public bool Value1Checked { get; set; }
// In constructor
Value1Checked = false;
现在,我相信应用程序不应允许在行的 TExtBox 中输入文本,因为它的 IsEnabled 值具有属性 Value1Cheched 即 false。除非用户单击 Value1 复选框,否则不应让用户添加它。但是上面的代码没有影响。无论复选框的值如何,用户仍然可以在文本块中输入值。
我哪里错了??
附加信息 标题包含一个复选框和文本“Value1”。我想让用户根据单击标题的复选框启用/禁用输入值。
请提供任何指导或帮助。
谢谢
更新的 XML 代码
<DataGridTemplateColumn>
<DataGridTemplateColumn.Header>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="1" Text="TValue1" IsEnabled="{Binding ElementName=chkValue1, Path=IsChecked}" />
<CheckBox Name="chkValue1" Grid.Column="0" Width="16" />
</Grid>
</DataGridTemplateColumn.Header>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Value1Checked}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<TextBox IsEnabled="{Binding ElementName=chkValue1, Path=IsChecked}" Text="{Binding Path=value1, Mode=TwoWay}" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
有了这个,如果我选中该复选框,那么只有我能够在该列中为每一行输入值。但是,默认情况下,每行的该列中的值是“FALSE”,当我输入文本时,我输入(int)“23”并且焦点丢失它再次仅显示“FALSE”。还是怎么了??