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

时间:2010-11-15 15:49:34

标签: wpf listview gridview dynamic

我正在尝试动态设置我的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>
..

2 个答案:

答案 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