我在 SilverLight 中开发了一个用户控件,其中包含多个子控件。 文本框
、组合框
等。
问题是,当我将 UserControl
包含到父 View 中并将完整控件设置为 IsEnabled=False
时,该特定 UserControl 中的子控件
仍然启用。
毕竟我发现了问题。
添加类似的东西,意味着 IsEnabled
绑定(bind)位于 UserControl
绑定(bind)中,而不是我在 DataContext
中的预期 parent 。
<localControls:TeamEmployeeSelector Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2"
IsEnabled="{Binding CanModify}" DataContext="{Binding Confidentiality}"/>
问题:
但是仍然存在如何将 IsEnabled
绑定(bind)到 Parent 的 ViewModel 的问题?因为将 CanModify
属性复制到 Child Control 的 ViewModel 中不是很优雅。
最佳答案
与其以某种方式修改绑定(bind)(例如,您可以使它依赖于其他答案中建议的其他控件名称),我将单独移动将被禁用的控件并控制 DataContext
将被更改。例如:
<ContentControl IsEnabled="{Binding CanModify}" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2">
<localControls:TeamEmployeeSelector DataContext="{Binding Confidentiality}"/>
</ContentControl>
关于c# - 将 IsEnabled 绑定(bind)到父 ViewModel 而不是 UserControl ViewModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5375294/