【问题标题】:Seting control value on the same stackPanel WPF在同一个 stackPanel WPF 上设置控制值
【发布时间】:2011-11-21 19:02:00
【问题描述】:

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

我尝试使用 RelativeSource 但不起作用。 感谢您的帮助。

【问题讨论】:

    标签: wpf datatemplate


    【解决方案1】:

    那么你可以绑定TextBoxTextForTextBox的内容,并将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>
    

    【讨论】:

    • 感谢您的回答,但我正在寻找更多 XAML 的东西。我不想在/VM 后面使用任何代码。
    • 非常感谢您!这就是我要找的。​​span>
    猜你喜欢
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    • 2011-06-28
    • 2012-03-14
    • 2010-10-24
    • 1970-01-01
    • 2012-08-07
    • 1970-01-01
    相关资源
    最近更新 更多