将所有控件标记为只读 WPF



好吧,这是一个有趣的问题。

我有一个带有选项卡的 wpf 应用程序。我想做的是有一个数据库设置,关闭编辑所有文本框的功能。我的想法是引入值,如果值为真,那么我会将所有文本框转换为只读。

我看过这个例子:

private void DisableControls(Control con)
{
foreach (Control c in controls)
{
DisableControls(c);
}
con.Enabled = false;
}

但是,我在控件下得到红色波浪线,并在启用下再次出现。首先,我将说我是WPF的新手。

有没有人对此有解决方案(甚至更好的方法(,任何正确的指向都会有所帮助。

创建包装数据库模型的视图模型

public class MyViewModel : INotifyPropertyChanged
{
public bool MakeReadOnly {get;set;}
}

在视图中引用视图模型

<Window x:Class="Example.MainWindow"
...
xmlns:local="clr-namespace:Example"
...>
<Window.Resources>
<local:MyViewModel x:Key="ViewModel"/>
</Window.Resources>
...
</Window>

将布尔值绑定到文本框 IsReadOnly 属性

<TextBox x:Name="FirstName" IsReadOnly="{Binding MakeReadOnly">
The user may not modify the contents of this TextBox if marked as readonly
</TextBox>
<TextBox x:Name="LastName" IsReadOnly="{Binding MakeReadOnly">
The user may not modify the contents of this TextBox if marked as readonly
</TextBox>

有关查看模型的更多信息,请单击此处

希望这有帮助!