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
Self
绑定,并使用Path=DataContext.MyBoolField
进一步阅读,这是Silverlight的一个限制,WinRT是基于Silverlight构建的。还有一种解决方法也适用于WinRT包含MyBoolField的类是否正确实现了INotifyPropertyChanged?调试时,请在Visual Studio的输出窗口中检查绑定错误。@Jay在输出窗口中没有错误。@DJ刚刚做了-似乎没有任何效果。通常的用法可能是getter似乎永远不会出现在MyBoolField上调用,因此Setter似乎根本不调用绑定。