WPF ListView - różne kolumny dla różnych danych

0

Hej, próbuję i mi nie idzie. Stawiam swoje pierwsze kroki w WPF i albo porwałem się z motyką na Słońce, albo nie da się tego zrobić.
Jest taka sytuacja. Mamy UserControl. Na UserControl jest ListView. ListView binduje sobie itemy z jakiejś tam właściwości UserControl.

I teraz tak. Czasami chcę, żeby w ListView były dwie kolumny, a czasami 3. Coś w ten deseń:

//code behind
class MyUserControl: UserControl
{
    public bool ThreeColLayout {get; set;}
    public MyItems Items {get; set;}
}
//xaml - bardzo pseudokod

<DataTemplate x:Key="3Cols">
  <GridViewColumn Header="Kol1".... />
  <GridViewColumn Header="Kol2".... />
  <GridViewColumn Header="Kol3".... />
</DataTemplate>

<DataTemplate x:Key="2Cols">
  <GridViewColumn Header="Kol1".... />
  <GridViewColumn Header="Siema".... />
</DataTemplate>

<Style TargetType="GridView">
  <Style.Triggers>
    <DataTrigger Property="{Binding ThreeColLayout}" Value="True">
        <Setter Property="Template" Value="{StaticResource 3Cols}"/>
    </DataTrigger>

    <DataTrigger Property="{Binding ThreeColLayout}" Value="False">
        <Setter Property="Template" Value="{StaticResource 2Cols}"/>
    </DataTrigger>

  </Style.Triggers>
</Style>

<ListView ItemSource="{Binding Items}">
  <ListView.View>
    <GridView />
  </ListView.View>
</ListView>

UserControl ma wyświetlać obiekty typu MyItem. Tyle że w pewnych okolicznościach ma to robić za pomocą dwóch kolumn, a czasami za pomocą trzech. UserControl jest utworzone z konkretnym layoutem, a więc nie ma mowy, żeby layout się zmienił w trakcie życia UserControl. Równie dobrze mógłbym stworzyć dwa różne UserControl, ale właściwie cały kod byłby wspólny.

0

no i wszystko ok, dobrze kombinujesz, ale czy na pewno chcesz zmienić własność "Template" a nie "Columns"?

0

No właśnie, jak mówiłem stawiam pierwsze kroki w WPF i nie wiem właściwie co powinienem zmieniać tutaj :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1