c# - 将 IsEnabled 绑定(bind)到父 ViewModel 而不是 UserControl ViewModel

标签 c# .net silverlight data-binding mvvm-light

我在 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/

相关文章:

c# - Winforms 添加和删除用户控件

c# - MassTransit RabbitMQ 中的并发限制如何工作?

c# - 在Unity中使用ZXing定位QRcode的Position Pattern

.net - GroupBox控件中的圆角

c# - 在 C# 中以 O(log n) 最坏情况搜索数组中的特定字符串

wpf - 数组按数据网格上的位置绑定(bind) Xaml

c# - 将按钮添加到 Winforms DataGridView

c# - 写入记录器时出错。 (无法打开源 '.NET Runtime' 的日志。您可能没有写入权限。)

silverlight - DeepZoom 和 SeaDragaon AJAX 的许可证吗?

c# - 在生成的部分类上使用 XmlIgnore