代码之家  ›  专栏  ›  技术社区  ›  paul

WPF:是否可以创建多个ListView.View模板并在运行时动态选择一个?

  •  2
  • paul  · 技术社区  · 16 年前

    我想拥有 ListView

    Adding Columns programatically to listview in WPF? )但我想知道是否可以定义不同的列描述( GridView

    我用的是 列表视图

    <ListView x:Name="TheList">
        <ListView.View>
            <GridView>
                <GridViewColumn Header="Columns" Width="80"/>
                <GridViewColumn Header="Added" Width="80"/>
                <GridViewColumn Header="Automatically" Width="100"/>
            </GridView>
        </ListView.View>
    </ListView>
    

    我的问题是:我能定义一些 ListView.View 根据列表中的对象类型在它们之间切换?列表一次只能包含一种类型的对象。我只需要显示一组不同的属性。

    到目前为止,我收到的回复似乎假设我有一个简单的列表,其中包含混合对象。事实并非如此。我要找的是这样的东西:

    Name        Address      Town
    -----------------------------------------
    Liz         Buck House   London
    Angie       Block House  Berlin
    

    Town       Population
    ------------------------------
    London     123456
    Swansea    65432
    

    也许我把事情弄得太复杂了。。。。

    2 回复  |  直到 9 年前
        1
  •  2
  •   Eduardo Molteni    16 年前

    首先,定义一个数据模板

    <DataTemplate x:Key="MyListTemplate">
        <StackPanel Orientation="Horizontal" VerticalAlignment="Center">
            <TextBlock FontSize="14" Foreground="Black" Name="tbNombre" Padding="5">
                <TextBlock.Text>
                    <Binding Path="Nombre"></Binding>
                </TextBlock.Text>
            </TextBlock>
        </StackPanel>
        <DataTemplate.Triggers>
            <DataTrigger Binding="{Binding Path=Active}"
                                Value="False">
                <Setter TargetName="tbNombre" Property="Foreground" Value="Silver" />
            </DataTrigger>
        </DataTemplate.Triggers>
    </DataTemplate>
    

    之后,动态更改数据模板:

    Dim template As DataTemplate = Application.Current.Resources("MyListTemplate")
    MyList.ItemTemplate = template
    
        2
  •  1
  •   Cameron MacFarland    16 年前

    DataType 该对象的模板属性。然后WPF将选择与项目类型匹配的模板。

    <DataTemplate DataType="{x:Type l:MyType}"> ...
    

    Bea Stollnitz's blog 更多信息。