1

我想绑定到SelectedItems.CountDataTemplate位于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>

但我收到以下错误:

System.Windows.Data Error: 40 : BindingExpression path error: 'myListBox' property not found on 'object' ''DataTemplate' (HashCode=50217655)'. BindingExpression:Path=aoiListBox.SelectedItems.Count; DataItem='DataTemplate' (HashCode=50217655); target element is 'Button' (Name='myBtn'); target property is 'NoTarget' (type 'Object')

我怎样才能实现这种绑定?提前致谢。

4

1 回答 1

1

好吧,您可以编写一个解决方法,但我强烈建议不要以这种方式实现它。考虑一下,a 中的样式ResourceDictionary是一个空资源,它应该与myListBox应用程序中的任何特定实例(在您的情况下)解耦。问题是,您不能在另一个Button. 所以你不需要,最好你不应该,将它声明为资源。

我绝对建议Style直接在Button. 例如

<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>

此外,我会使用BindingviaElementName属性。

于 2013-06-13T15:35:19.653 回答