将WPF用户控件的启用属性绑定到子控件

时间:2018-11-16 06:14:15

标签: c# wpf xaml

假设我有一个带有一个或多个子控件的UserControl。

如何在禁用UserControl时禁用这些子控件,并在启用它们时启用它们?我的UserControl没有ViewModel,但只是使用了后台代码,因为它非常简单。

我试图做这样的事情:

<UserControl>
    <ListBox IsEnabled="{Binding IsEnabled}" >
    </ListBox>
</UserControl>

但它不起作用。

2 个答案:

答案 0 :(得分:0)

在列表框的ItemContainerStyle上添加绑定

<ListBox.ItemContainerStyle>
    <Style TargetType="ListBoxItem">
        <Setter Property="IsEnabled"
                Value="{Binding Path=IsEnabled,
                        RelativeSource={RelativeSource AncestorType=ListBox}}"/>
    </Style>
</ListBox.ItemContainerStyle>

答案 1 :(得分:0)

我意识到我的错误是什么。

我试图将UserControl实例上的IsEnabled属性绑定到我的数据上下文中的值。

但是,绑定到UserControl时,您必须执行以下操作:

IsEnabled="{Binding DataContext.IsWatermarkEnabled, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}}"

这解决了问题。