Reputation: 36048
Let's say I have the follwoing listview in 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>
how can I create the same listview with C#?
this is what I have worked out:
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;
Upvotes: 1
Views: 390
Reputation: 16981
Resource adding:
view.Resources.Add(typeof(GridViewColumnHeader),
new Style(typeof(GridViewColumnHeader))
{
Setters =
{
new Setter(GridViewColumnHeader.VisibilityProperty, Visibility.Collapsed)
}
}
);
DataTemplate creating:
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;
Upvotes: 2