私の DataGrid には、ヘッダーにチェックボックスがある textcolumn があります。
<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;
現在、IsEnabled 値にはプロパティ Value1Cheched、つまり false があるため、アプリは行の TExtBox にテキストを入力することを許可すべきではないと考えています。ユーザーが 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」のみが表示されます。それでも何がうまくいかないのですか??