【发布时间】:2012-03-15 13:02:08
【问题描述】:
我有一个包含 2 个列表视图的网格。列表视图是相同的(只有 itemsource 与 c 的其他项目不同)datatemplate = Stackpanel 具有 1 个标签和另一个网格。现在我希望网格(在数据模板内的堆栈面板内)仅在选中项目(标签)时才可见。我用这段代码试了一下(我把它放在 Listview 的数据模板中:
<StackPanel>
<Label content={binding blabla} />
<Grid Visibility="{Binding IsSelected,RelativeSource={RelativeSource AncestorType={x:Type ListViewItem}, Mode=FindAncestor}, Mode=OneWay, Converter={StaticResource BooleanToVisibilityConverter}}" >
...random labels etc...
</Gird>
</StackPanel>
这行得通!但是,如果我在第二个列表视图中选择一个项目(并且只有第二个),那么第一个也显示该网格(在同一“项目级别”上)。(例如,在第二个列表视图中,我选择第三个项目(标签),然后网格显示在第二个列表视图的第三个项目上,但第三个项目网格显示在第一个列表视图上!!!)
我认为这与相对来源有关,但我找不到答案。 希望大家帮帮我。
【问题讨论】:
标签: wpf listview mvvm datatemplate relativesource