MVVM上的按钮,单击更改文本框的可见性

本文关键字:文本 可见性 单击 按钮 MVVM | 更新日期: 2023-09-27 18:18:11

我对MVVM技术很陌生,似乎在任何地方都找不到我问题的答案。有人能给我一个详细的例子,如何得到这个工作。我正试图打开按钮,点击有一个文本框显示自己。

到目前为止我有这个。WPF

<TextBox Visibility="{Binding IsVisibleBoolean, Converter={StaticResource boolToVis}}"
        Height="23" HorizontalAlignment="Left" Margin="340,439,0,0" Name="textBox2" VerticalAlignment="Top" Width="180" />
<Button  Command="{Binding IsVisibleBoolean}" Height="32" Margin="526,401,142,0" Name="button2" VerticalAlignment="Top" BorderThickness="0"  Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}"/>
c# Viewmodel

private bool _isVisibleBoolean = false;
    public bool IsVisibleBoolean
    {
        get { return _isVisibleBoolean; }
        set
        {
            if (_isVisibleBoolean == value)
                return;
            _isVisibleBoolean = value;
            RaisePropertyChanged("IsVisibleBoolean");
        }
    }

和我的布尔转换类

public class BooleanToVisibilityConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter,
                          CultureInfo culture)
    {
        if (value is Boolean)
        {
            return ((bool)value) ? Visibility.Visible : Visibility.Collapsed;
        }
        return value;
    }
    public object ConvertBack(object value, Type targetType, object parameter,
                              CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

MVVM上的按钮,单击更改文本框的可见性

Button上的Command属性应该绑定到ICommand对象。你把它绑定到一个布尔属性。如果您想保持这个命令为基础,创建一个实现ICommand的类,并在Execute方法中设置视图模型的IsVisibleBoolean

或者更简单的方法:使用ToggleButton而不是Button