'视图不能由多个ListView共享'System.Windows..ListView

PaN*_*1Me 1 wpf listview gridview dynamic

我正在尝试ListView动态设置视图:但是我得到一个异常' 视图不能被多个共享ListView',尽管我只使用它一次.无论如何,如果我已经创建了一个实例,然后是DataTrigger触发器,那么Exception也会发生.

这是我的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>
Run Code Online (Sandbox Code Playgroud)

这是来自资源:

<GridView x:Key="MyView1">
    <GridViewColumn DisplayMemberBinding="{Binding Path=MyProperty}" >
        <GridViewColumnHeader Content="Text" />
    </GridViewColumn>
</GridView>
..
Run Code Online (Sandbox Code Playgroud)

Fre*_*lad 7

您可以将x:Shared ="False"属性添加到GridView资源中,如下所示

<GridView x:Key="MyView1" x:Shared="False">
    <GridViewColumn DisplayMemberBinding="{Binding Path=MyProperty}" > 
        <GridViewColumnHeader Content="Text" /> 
    </GridViewColumn> 
</GridView> 
.. 
Run Code Online (Sandbox Code Playgroud)

更新

在这里上传了示例项目


Gra*_*ian 6

使用DynamicResource而不是StaticResource.

有关完整代码,请参阅此问题.