3

请让我摆脱痛苦:

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

whereMyBoolFieldListView'sassigned中每个项目的可用属性ItemsSource,当然是类型bool

期望的行为是IsEnabled每个的属性都ListViewItem绑定到MyBoolField它包含的对象的属性(来自ListView's的元素ItemsSource)。然而,上面的例子没有注意这个绑定并且总是true.

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

我只能假设这是范围界定问题,或在此特定场景中限制使用绑定,但是我无法找到任何文档来支持这一点。

也许知道在DataTemplate分配给 thisListViewItemTemplate所有工作中设置的绑定是有用的,所以希望问题不是那么基本/愚蠢。

评论中的要点

  • 调试“输出”窗口中没有相关输出。
  • 在其他地方绑定MyBoolField属性可以正常工作,因为底层数据源正确地提供了一个布尔值,这似乎只是在这种情况下绑定它的问题。
4

1 回答 1

0

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

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

于 2012-10-02T11:24:02.287 回答