我有一个情况: DataGrid与TemplateColumn。模板包含带有CheckBox和TextBox的Stack面板。我想要的是当我按下CheckBox然后TextBox,它在同一个StakcPanel设置值为1时。 所以简单 CheckBox - > IsChecked == true - >将TextBox值设置为1(与CheckBox在同一StackPanel上的TextBox)
我尝试使用RelativeSource但没有工作。 谢谢你的帮助。
答案 0 :(得分:1)
您可以绑定TextBox TextForTextBox的内容,并将Checked状态绑定到Checked。在你的viewModel中你会:做
private string _text;
private bool _checked;
public string TextForTextBox
{
get { return _text; }
private set { _text = value;}
}
public bool Checked
{
get { return _checked; }
set
{
if (_checked != value)
{
_checked = value;
Text = _checked ? 1 : = 0;
PropertyChanged("Checked");
PropertyChanged("TextForTextBox");
}
}
}
这假设你有一个实现INotfiyPropertyChanged的ViewModel。
修改强> 在纯XAML中更改此代码的代码:
<Grid>
<StackPanel>
<CheckBox x:Name="check" />
<TextBox>
<TextBox.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=check, Path=IsChecked}" Value="True">
<Setter Property="TextBox.Text" Value="1" />
</DataTrigger>
<DataTrigger Binding="{Binding ElementName=check, Path=IsChecked}" Value="False">
<Setter Property="TextBox.Text" Value="0" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
</StackPanel>
</Grid>