XAML - ListViewItem - IsEnabled Binding

3
请帮我解决疑惑:
<ListView.ItemContainerStyle>
    <Style TargetType="ListViewItem">
        <Setter Property="IsEnabled" Value="{Binding MyBoolField}" />
    </Style>
</ListView.ItemContainerStyle>

MyBoolFieldListView的每个项目上可用的属性,并且当然是bool类型。

期望的行为是,每个ListViewItemIsEnabled属性都绑定到它包含的对象的MyBoolField属性(来自ListViewItemsSource元素)。但是,上面的示例没有注意这种绑定,总是为true

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

我只能假设这是作用域问题或在此特定情况下使用绑定的限制,但我找不到任何支持此的文档。

也许知道在分配给此ListViewItemTemplateDataTemplate中设置的绑定都可以正常工作,因此问题希望不是那么基本/愚蠢。

评论中的要点

  • 调试“输出”窗口中没有相关输出。
  • 在其他地方绑定MyBoolField属性正常工作,因此底层数据源正确提供布尔值,这似乎仅是在此上下文中绑定的问题。

2
在调试时,请检查 Visual Studio 的输出窗口中是否存在绑定错误。 - Jay
@Jay 输出窗口没有错误。 - jstephenson
只是为了确保样式本身是否有效。您可以将ToolTip、Header或任何颜色设置为硬编码值,以确保样式已正确应用吗? - dowhilefor
@dowhilefor 静态定义的样式确实按预期生效。 - jstephenson
@jstephenson,好的,我的最终想法是:问题不在XAML上,而在代码上。你能否展示一下你的类,至少包括属性本身? - dowhilefor
显示剩余8条评论
1个回答

0

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接