数据绑定自定义控件与父级

时间:2009-12-06 23:17:53

标签: wpf data-binding user-controls

我有一个包含列表框的UserControl。

在父窗口中,我有这个UserControl和一个按钮。

理想情况下,我想在parent按钮上使用ChangePropertyAction行为,并将其绑定到UserControl的列表框计数。

这个想法是,如果usercontrol中的列表框中没有条目,则隐藏父窗口上的按钮。列表框绑定到observablecollection。

我是否创建了DependencyProperty来执行此操作?我不知道如何将列表框的计数绑定到此属性。

非常感谢您对正确方法的深入了解。

2 个答案:

答案 0 :(得分:0)

您可以使用ElementName绑定从ListBox到达Button状态。然后,您想使用BooleanToVisibilityConverter来做魔术。

像这样:

<Window x:Class="NestedTreeTest.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="200" Width="300">

    <Window.Resources>
        <BooleanToVisibilityConverter x:Key="boolToVisibilityConverter" />
    </Window.Resources>

    <StackPanel>
        <Button Visibility="{Binding ElementName=myList, Path=HasItems, Converter={StaticResource boolToVisibilityConverter}}">
                Text
        </Button>
        <ListBox x:Name="myList">
            <!--<ListBoxItem>Item A</ListBoxItem>-->
        </ListBox>
    </StackPanel>
</Window>

注释掉,或取消注释ListBoxItems以查看其有效...

答案 1 :(得分:0)

我最终使用了MVVM Futures项目中的Messenger类,让UserControl的ViewModel向其他ViewModel发出信号。

这让我们的多个侦听器监视相同的更改,而不需要额外的依赖属性。