WPF:绑定到ResourceDictionary中DataTemplate中的元素

时间:2013-06-13 15:26:53

标签: wpf binding datatemplate resourcedictionary

我想绑定到一个元素的属性(在我的特定情况下是一个ListBox的SelectedItems.Count),它是从位于DataTemplate的{​​{1}}动态插入到我的窗口中的。我想在计数达到一定数量的ResourceDictionary时启用/禁用按钮。我认为这样可行:

ListBoxItems

但我收到以下错误:

<Style TargetType="Button">
  <Style.Triggers>
    <DataTrigger Binding="{Binding Source={StaticResource myResourceKey}, Path=myListBox.SelectedItems.Count}" Value="25">
      <Setter Property="IsEnabled" Value="False"/>
    </DataTrigger>
  </Style.Triggers>
</Style>

如何实现此绑定?提前谢谢。

1 个答案:

答案 0 :(得分:1)

那么你可以写一个解决方法,但我强烈建议不要那样实现它。请注意,ResourceDictionary中的样式是一个空资源,应该与应用程序中的任何特定实例(在您的情况下为myListBox)分离。问题是,您无法在另一个Button上使用此格式错误的样式。所以你不需要,更好的是你不应该将它声明为资源。

我绝对建议您直接在Style中声明此Button。 E.g。

<ListBox x:Name="myListBox" />
<Button>
    <Button.Style>
        <Style TargetType="Button">
            <Style.Triggers>
                <DataTrigger Binding="{Binding ElementName=myListBox, 
                             Path=SelectedItems.Count}" Value="25">
                    <Setter Property="IsEnabled" Value="False"/>
                </DataTrigger>
            </Style.Triggers>
        </Style> 
    </Button.Style>
</Button>

此外,我会通过Binding属性使用ElementName