标记为只读所有控件WPF

时间:2018-05-08 15:16:39

标签: wpf controls

好的,这是一个有趣的。

我有一个带标签的wpf应用程序。我想要做的是有一个数据库设置,关闭编辑所有文本框的能力。我想的是引入值,如果值为true,那么我会将所有文本框都变为只读。

我见过这个例子:

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

然而,我在控制下得到红色波浪线,再次在启用下。我将在前言中说我是WPF的新手。

有没有人能够解决这个问题(甚至更好的方法),任何指向正确的方式都会有所帮助。

1 个答案:

答案 0 :(得分:2)

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

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>

有关查看模型的更多信息here

希望这有帮助!