XAML - ListViewItem - IsEnabled绑定

时间:2012-10-02 00:13:40

标签: c# xaml windows-8 microsoft-metro winrt-xaml

请让我摆脱痛苦:

<ListView.ItemContainerStyle>
    <Style TargetType="ListViewItem">
        <Setter Property="IsEnabled" Value="{Binding MyBoolField}" />
    </Style>
</ListView.ItemContainerStyle>

其中MyBoolField是指定ListView的{​​{1}}中每个项目的可用属性,当然属于ItemsSource类型。

所需的行为是每个bool的{​​{1}}属性绑定到它包含的对象的IsEnabled属性(来自ListViewItem的{​​{1}} { {1}})。但是,上面的示例并不关注此绑定,始终为MyBoolField

如果我将值静态设置为ListView,则该项目将按预期禁用。

我只能假设这是一个范围问题,或者在这个特定情况下限制绑定的使用,但我无法找到任何文档来支持这一点。

也许知道在ItemsSource分配给true的{​​{1}}的{​​{1}}中设置的绑定都可以正常工作,所以问题可能不是那么基本/愚蠢。

评论中的要点

  • 调试'输出'窗口中没有相关输出。
  • false属性绑定到其他位置工作正常,因此底层数据源正确提供了布尔值,这似乎只是在此上下文中绑定它的问题。

1 个答案:

答案 0 :(得分:0)

好的,阅读this post似乎它是WinRT的一个已知限制,也许你在那里发现了一些有用的东西。 有一件事我也会尝试,因为那篇文章中的OP说了一些关于这一点。使用Self绑定,并使用Path=DataContext.MyBoolField

进一步阅读,这是Silverlight的限制,WinRT是基于它构建的。所以this是一种解决方法,也适用于WinRT