c# - 如何从 View 模型(WPF、MVVM)更改文本框的可见属性

标签 c# wpf mvvm properties

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

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

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

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

谢谢

最佳答案

由于这是 MVVM,您不想更改文本框的可见性您实际上想要禁用一些选项..然后 - 该选项是启用还是禁用应反射(reflect)您的文本框的可见性。

所以基本上您需要 ViewModel 中的 Property,例如:

public bool CanMyPropertyBeChanged {get; set;}

您可以更改哪些内容(当然您可能应该 implement INotifyPropertyChanged 如果您还没有)...
并通过转换器将文本框的可见性绑定(bind)到此属性:

<TextBox Visibility="{Binding CanMyPropertyBeChanged, Converter={StaticResource boolToVis}}" />

您可以使用内置的 BooleanToVisibilityConverter 为此:

<BooleanToVisibilityConverter x:Key="boolToVis" />

关于c# - 如何从 View 模型(WPF、MVVM)更改文本框的可见属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15545703/

相关文章:

c# - WPF Datagrid 根据值触发行颜色

c# - 如何在初始化期间访问 UserControl 的 XAML 设置属性?

MVVMLight消息总线单同步/异步

.net - Winform->WPF MVVM 键绑定(bind)错误?

java - 将 C# RSACryptoServiceProvider 代码翻译成 Java

c# - 修改父行为的访问者的层次结构。 Liskov 还好吗?

.net - WPF:如何使 Canvas 自动调整大小?

wcf - MVVM 和 WPF - View 模型和模型关系

c# - 为什么 SslStream.Read 总是将 TcpClient.Available 设置为 0,而 NetworkStream.Read 不设置

c# - 即使字符串匹配,正则表达式验证也会显示错误