Construct listview with c#

本文关键字:with listview Construct | 更新日期: 2023-09-27 18:27:47

假设我在xaml:中有以下列表视图

   <ListView Name="myListView" DataContext="{Binding MyProperty}" ItemsSource="{Binding}" IsSynchronizedWithCurrentItem="True">            
        <ListView.Resources>
            <Style TargetType="GridViewColumnHeader">
                <Setter Property="Visibility" Value="Collapsed" />
            </Style>
        </ListView.Resources>
        <ListView.View>
            <GridView >
                <GridViewColumn Width="Auto">
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding SomeProperty}" TextAlignment="Center"></TextBlock>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
            </GridView>
        </ListView.View>
    </ListView>

如何使用C#创建相同的列表视图

这就是我所做的:

        ListView myListView = new ListView();
        // set bindings
        myListView.IsSynchronizedWithCurrentItem = true;
        Binding b = new Binding("MyProperty")
        {
            Source = this
        };
        myListView.SetBinding(ListView.ItemsSourceProperty, b);
        myListView.Resources.Add(; // dont know how to add those resource;
        GridView g = new GridView();
        GridViewColumn gc = new GridViewColumn();
        DataTemplate dt = new DataTemplate(new TextBlock()); // I think this is wrong
        g.Columns.Add(gc); // add gridview column
        gc.CellTemplate = dt;
        myListView.View = g;

Construct listview with c#

资源添加:

  view.Resources.Add(typeof(GridViewColumnHeader), 
    new Style(typeof(GridViewColumnHeader)) 
    { 
      Setters = 
      {
        new Setter(GridViewColumnHeader.VisibilityProperty, Visibility.Collapsed)
      } 
    }
  );

数据模板创建:

  var template = new DataTemplate();
  var textBlock = new FrameworkElementFactory(typeof(TextBlock));
  textBlock.SetBinding(TextBlock.TextProperty, new Binding("SomeProperty"));
  textBlock.SetValue(TextBlock.TextAlignmentProperty, TextAlignment.Center);
  template.VisualTree = textBlock;