Wpf 将自定义控件与父控件进行数据绑定

Wpf 将自定义控件与父控件进行数据绑定,wpf,data-binding,user-controls,Wpf,Data Binding,User Controls,我有一个包含listbox的UserControl 在父窗口上,我有这个UserControl和一个按钮 理想情况下,我希望在parents按钮上使用ChangePropertyAction行为,并将其与UserControl的listbox计数联系起来 其思想是,如果usercontrol中的listbox中没有条目,则父窗口上的按钮将隐藏。列表框绑定到一个observablecollection 我是否创建DependencyProperty来执行此操作?但是,我不确定如何将列表框的计数绑定

我有一个包含listbox的UserControl

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

理想情况下,我希望在parents按钮上使用ChangePropertyAction行为,并将其与UserControl的listbox计数联系起来

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

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


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

您可以使用
元素名称
绑定从
按钮
到达
列表框
状态。然后,您需要使用一个
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
以查看它是否工作…

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


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

谢谢你的帮助。但问题是listbox位于UserControl内部。所以在Window1上,它的内容更多:文本,我需要绑定到MyControl中的列表框。我不确定如何从UserControl中公开它是个问题。