C# XAML-ListViewItem-IsEnabled绑定

C# XAML-ListViewItem-IsEnabled绑定,c#,xaml,windows-8,microsoft-metro,winrt-xaml,C#,Xaml,Windows 8,Microsoft Metro,Winrt Xaml,请让我摆脱痛苦: <ListView.ItemContainerStyle> <Style TargetType="ListViewItem"> <Setter Property="IsEnabled" Value="{Binding MyBoolField}" /> </Style> </ListView.ItemContainerStyle> 其中,MyBoolField是ListView分配的

请让我摆脱痛苦:

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

其中,
MyBoolField
ListView
分配的
ItemsSource
中每个项目上可用的属性,当然是
bool
类型

所需的行为是,每个
ListViewItem
IsEnabled
属性绑定到它包含的对象的
MyBoolField
属性(来自
ListView
ItemsSource
的元素)。但是,上面的示例没有注意此绑定,并且始终是
true

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

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

知道在
DataTemplate
中设置的绑定分配给这个
ListView
ItemTemplate
都可以正常工作可能很有用,所以问题希望不是那么根本/愚蠢

评论的要点
  • 调试“输出”窗口中没有相关输出
  • MyBoolField
    属性绑定到其他地方效果很好,因为底层数据源正确地提供了布尔值,而这似乎只是在这种上下文中绑定它的问题
好的,读起来似乎这是WinRT的一个已知限制,也许你会发现一些有用的东西。 有一件事我也会尝试,因为那篇文章中的OP说了一些关于这一点的话。使用
Self
绑定,并使用
Path=DataContext.MyBoolField


进一步阅读,这是Silverlight的一个限制,WinRT是基于Silverlight构建的。还有一种解决方法也适用于WinRT

包含MyBoolField的类是否正确实现了INotifyPropertyChanged?调试时,请在Visual Studio的输出窗口中检查绑定错误。@Jay在输出窗口中没有错误。@DJ刚刚做了-似乎没有任何效果。通常的用法可能是getter似乎永远不会出现在MyBoolField上调用,因此Setter似乎根本不调用绑定。