我的viewmodel上有一个用户列表,我将其传递给以下listView:
<ListView
Background="Azure"
x:Name="ContactList"
ItemsSource="{Binding Path=User}"
SelectedItem="{Binding SelectedUser, Mode=TwoWay}">
<ListView.ItemTemplate>
<DataTemplate>
<Border Width="300" Height="Auto" BorderThickness="1">
<StackPanel>
<TextBlock>
<Run Text="{Binding Name}" />
<Run Text="{Binding Age}" />
</TextBlock>
<CheckBox Visibility="{???}">
<TextBlock FlowDirection="LeftToRight"></TextBlock>
</CheckBox>
</StackPanel>
</Border>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
您可以看到我的DataTemplate
包含checkbox
。我希望它的Visibility依赖于我在ViewModel上的bool属性。如何从listView中访问此属性?
从这里看,似乎有办法访问ListView-items父级。我想那会为我做的。有人能指出我正确的方向。感谢
答案 0 :(得分:0)
执行此操作的最佳方法是将可见性设置与用户数据一起包括在内。假设您的视图模型可见性属性名为CheckBoxVisibility
,您可能会这样:
<ListView ItemsSource="{Binding}" ...>
<ListView.ItemTemplate>
<DataTemplate>
...
<Run Text="{Binding Path=User.Name}" />
<Run Text="{Binding Path=User.Age}" />
...
<CheckBox Visibility="{Binding Path=CheckBoxVisibility}">
...
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
在WPF中,您可以使用RelativeSource = RelativeAncestor绑定;但是,这在Window Store / Windows Phone 8+应用程序中不可用。