【问题标题】:Data binding custom control with parent与父级数据绑定自定义控件
【发布时间】:2009-12-06 23:17:52
【问题描述】:

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

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

理想情况下,我想在父按钮上使用 ChangePropertyAction 行为,并将其与 UserControl 的列表框计数联系起来。

如果用户控件内的列表框中没有条目,则隐藏父窗口上的按钮。列表框绑定到一个 observablecollection。

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

非常感谢您对正确方法的任何见解。

【问题讨论】:

    标签: wpf data-binding user-controls


    【解决方案1】:

    您可以使用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 以查看它是否正常工作...

    【讨论】:

    • 感谢您的帮助。但问题是列表框位于 UserControl 内。所以在Window1上,它更多的是: 和我需要绑定到 MyControl 中的列表框。我不确定如何从 UserControl 中公开它是问题所在。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2010-10-11
      • 2013-03-15
      • 2015-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-15
      • 2016-03-11
      • 1970-01-01
      相关资源
      最近更新 更多