在同一个stackPanel WPF上设置控制值

时间:2011-11-21 19:02:00

标签: wpf datatemplate

我有一个情况: DataGrid与TemplateColumn。模板包含带有CheckBox和TextBox的Stack面板。我想要的是当我按下CheckBox然后TextBox,它在同一个StakcPanel设置值为1时。 所以简单 CheckBox - > IsChecked == true - >将TextBox值设置为1(与CheckBox在同一StackPanel上的TextBox)

我尝试使用RelativeSource但没有工作。 谢谢你的帮助。

1 个答案:

答案 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>