如何从视图模型(WPF、MVVM)更改文本框的可见属性

Rah*_*n R 5 c# wpf properties mvvm

我是 WPF 和 MVVM 的初学者。我在我的项目中的一个窗口上有某些控件。例如,我的窗口中有一个文本框。我正在使用 MVVM 模式,在这里我想从视图模型中更改文本框的可见属性。另一件事是,我想根据某些条件更改视图模型中文本框的可见性。

好吧,我用谷歌搜索了它,谷歌给了我一些建议,这些建议都是不同的解决方案,我完全困惑。

猜猜有人能帮我解决这个问题。

我知道这对 WPF MVVM 专家来说是小菜一碟,但由于我正在尝试学习这些东西,因此我需要一些代码作为示例。

谢谢

Bla*_*hma 4

由于这是 MVVM,您不想更改文本框的可见性,您实际上想要禁用某些选项。然后 - 无论该选项是启用还是禁用都应该反映在您的文本框的可见性上。

所以基本上你想要Property在 ViewModel 中,例如:

public bool CanMyPropertyBeChanged {get; set;}
Run Code Online (Sandbox Code Playgroud)

您可以更改(当然,如果还没有,您应该实现 INotifyPropertyChanged
)... 并通过转换器将文本框的可见性绑定到此属性:

<TextBox Visibility="{Binding CanMyPropertyBeChanged, Converter={StaticResource boolToVis}}" />
Run Code Online (Sandbox Code Playgroud)

您可以使用内置的BooleanToVisibilityConverter来实现此目的:

<BooleanToVisibilityConverter x:Key="boolToVis" />
Run Code Online (Sandbox Code Playgroud)