В моем DataGrid у меня есть текстовый столбец, у которого есть флажок в заголовке.WPF Bind DataGridTExtCol со своим заголовком cheeckbox
<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>
Я хочу, чтобы связать значение Checkbox с Textbox - Если флажок установлен, то только пользователь может ввести значение в текстовое поле. В моем коде позади меня:
public bool Value1Checked { get; set; }
// In constructor
Value1Checked = false;
Теперь, я считаю, что приложение не должно позволять вводить текст в TextBox в строке, его значение IsEnabled обладает свойством Value1Cheched то есть ложное. Если пользователь не щелкнет флажок Value1, он не должен позволять пользователю его добавлять. Но приведенный выше код не влияет. Пользователь по-прежнему может вводить значение в текстовом блоке независимо от значения флажка.
Где я иду не так ???
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ Заголовок содержит флажок и текст «Значение1». И я хочу, чтобы пользователь включал/отключал, чтобы вводить значение, на основе флажка, нажатого на заголовок.
Любые рекомендации или помощь, пожалуйста.
Благодаря
ОБНОВЛЕНО 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». Все еще то, что происходит не так?
Когда я перемещаю фокус из текстового поля, он выбрасывает «Invalid Operation Exception» «Требуется двусторонняя привязка Path или XPath. – Tvd
Я добавил« Value1Changed »в SampleData, но затем в строках этого столбца я могу ввести только bool value & not int. ???? Я добавил код xml выше в «Обновленный код» – Tvd
@Tvd 'Text =" {Binding Path = Value1Checked} "' для вашего 'TextBlock' должен быть' Text = "{Binding Path = value1} ' – Shoe