2009-12-06 139 views
0

我有一个UserControl包含一个列表框。父数据绑定自定义控件

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

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

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

我是否创建了一个DependencyProperty来做到这一点?我不知道如何将列表框的数量绑定到这个属性。

非常感谢任何洞察正确的方式来做到这一点。

回答

0

我结束了使用信使类从MVVM期货项目,让用户控件的视图模型信号其他ViewModels的变化。

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

0

您可以使用ElementName绑定从Button达到ListBox状态。然后你想用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看到它的工作...

+0

谢谢你的帮助。但问题是列表框是在UserControl中。因此,对窗口1,这是更多: <按钮能见度= “{绑定的ElementName = myList中,路径= HasItems,转换器= {StaticResource的boolToVisibilityConverter}}”> 文本 <控制:MyControl /> 我需要绑定到MyControl中的列表框。我不知道如何从UserControl公开这个问题。 – mfanto 2009-12-07 04:13:40