WPF-使用绑定将用户控件的子控件设置为只读

WPF-使用绑定将用户控件的子控件设置为只读,wpf,binding,Wpf,Binding,我有一个WPF应用程序,它有许多不同的控件。我需要能够根据视图模型中要绑定的属性将所有子控件设置为只读 我看到了几个挑战: 如何确保将父控件设置为只读,同时也将子控件设置为只读 并非所有控件都具有只读属性-有些是只读的,有些只有IsEnabled属性 除了我必须为每个控件绑定适当的属性(ReadOnly、IsReadOnly等),还有人对通用解决方案有什么看法吗 有什么方法可以让我使用附属财产吗?例如,我是否可以在网格上设置一个属性,然后在代码中遍历每个子控件设置它的适当属性(如果适用) 欢迎任

我有一个WPF应用程序,它有许多不同的控件。我需要能够根据视图模型中要绑定的属性将所有子控件设置为只读

我看到了几个挑战:

  • 如何确保将父控件设置为只读,同时也将子控件设置为只读
  • 并非所有控件都具有只读属性-有些是只读的,有些只有IsEnabled属性
  • 除了我必须为每个控件绑定适当的属性(ReadOnly、IsReadOnly等),还有人对通用解决方案有什么看法吗

    有什么方法可以让我使用附属财产吗?例如,我是否可以在网格上设置一个属性,然后在代码中遍历每个子控件设置它的适当属性(如果适用)

    欢迎任何想法


    David

    我建议使用WPF隐式样式。样式将包含到视图模型的绑定,例如:

    <Style TargetType="{x:Type Button}">
        <Setter Property="IsEnabled" Value="{Binding IsNotProcessing}" />
    </Style>
    
    另一种选择是创建一个具有资源键的样式,然后从每个控件引用该样式,这也很麻烦,但如果在设计时知道所有控件,则使用Blend可以相对轻松地完成(选择所有控件,然后使用“属性”窗口应用样式)


    希望这将对您有所帮助。

    在xaml文件中使用IshitteVisible属性使真正的只读

    <Grid IsHitTestVisible = "False">
    //put a control
    </Grid>
    
    
    //控制
    
    谢谢,我会在我的场景中解决这个问题……也许我想让事情变得比他们需要的更复杂。不,不要这样做。当IshitteVisible设置为False时(例如使用
    选项卡
    ),仍然可以访问这些控件。
    <Grid IsHitTestVisible = "False">
    //put a control
    </Grid>