我希望有人可以帮助我解决这个问题:
我创建了一个 WPF 用户控件(称为 MainControl),它使用了几个其他用户控件(UserControlA 和 UserControlB)。这 2 个用户控件绑定到在我的 MainControl.xaml.cs 类中创建的依赖属性(MainControlDependencyProperty1 到 3)。那些 DP(在许多情况下)从 ViewModel 绑定到 DP。以下代码说明了这一点:
<StackPanel>
<doesntmatter:UserControlA
Property1="{Binding Path=MainControlProperty1, RelativeSource={RelativeSource AncestorType={x:Type views:MainControl}, Mode=FindAncestor}, Mode=OneWay}"
Property2="{Binding Path=MainControlProperty2, RelativeSource={RelativeSource AncestorType={x:Type views:MainControl}, Mode=FindAncestor}, Mode=TwoWay}"
/>
<doesntmatter:UserControlB
Property2="{Binding Path=MainControlProperty2, RelativeSource={RelativeSource AncestorType={x:Type views:MainControl}, Mode=FindAncestor}, Mode=TwoWay}"
Property3="{Binding Path=MainControlProperty3, RelativeSource={RelativeSource AncestorType={x:Type views:MainControl}, Mode=FindAncestor}, Mode=TwoWay}"
/>
</StackPanel>
这样做我有一个独立的控件,可以在我的应用程序的几个不同部分中重用。我只是将它拖到 AXML 中,绑定正确的 DP 并且生活很好(我没有在上面存储任何数据)。UserControlsA 和 B 在其他几个地方也与 MainControl 分开使用。一切正常,但我想提高性能,所以我有几个问题:
1 – 将 UserControlsA 和 B 绑定到我的 MainControl 是否正确?我希望它完全独立于我的 ViewModel。我知道 DP 是在 WPF 中进行数据绑定的首选方法,但我不确定我是否以最好的方式(也是最快的方式)执行此操作。我做了一次,然后按照食谱做了……</p>
2 – 在某些情况下,我希望根本不使用 UserControlB。我使它不可见,但是当 ViewModel 中的 DP 更新时,控件中的绑定和其他所有内容仍在执行。是否有一种简单而轻松的方法来禁用 DP 或整个控件,以便我可以消除开销?(this.Disable=true;不要这样做)。我希望 UserControlB DP 表现得像不存在一样……</p>