我正在尝试动态设置我的ListView
视图:但是我得到了一个例外'视图不能被多个ListView
分享尽管我'我只使用它一次。
无论如何,如果我已经创建了一个实例,然后是DataTrigger
触发器,那么也会发生异常。
这是我的wpf代码:
<ListView ItemsSource="{Binding Collection}" SelectionMode="Extended" AlternationCount="2" >
<ListView.Style>
<Style>
<Setter Property="ListView.View" Value="{StaticResource MyView1}" />
<Style.Triggers>
<DataTrigger Binding="{Binding Path=MyPath1}" Value="True">
<Setter Property="ListView.View" Value="{StaticResource MyView2}" />
</DataTrigger>
<DataTrigger Binding="{Binding Path=MyPath2}" Value="True">
<Setter Property="ListView.View" Value="{StaticResource MyView3}" />
</DataTrigger>
</Style.Triggers>
</Style>
</ListView.Style>
</ListView>
这是来自Resources:
<GridView x:Key="MyView1">
<GridViewColumn DisplayMemberBinding="{Binding Path=MyProperty}" >
<GridViewColumnHeader Content="Text" />
</GridViewColumn>
</GridView>
..
答案 0 :(得分:7)
您可以将x:Shared =“False”属性添加到GridView资源中,例如
<GridView x:Key="MyView1" x:Shared="False">
<GridViewColumn DisplayMemberBinding="{Binding Path=MyProperty}" >
<GridViewColumnHeader Content="Text" />
</GridViewColumn>
</GridView>
..
<强>更新强>
上传的示例项目here
答案 1 :(得分:6)
使用DynamicResource
而不是StaticResource
。
有关完整代码,请参阅this question。