Как мне создать ResourceDictionary для моего ItemContainerStyle? - PullRequest
0 голосов
/ 03 марта 2019

Итак, у меня есть этот ListView в моем XAML, который становится довольно большим, я хотел бы разделить некоторые стили, сделанные в ResourceDictionary.

Вот как это выглядит прямо сейчас.

<ListView Grid.Row="1"
          x:Name="NotesListView"
          ItemsSource="{Binding NotesViewModel.Notes}">
    <ListView.ItemsPanel>
        <ItemsPanelTemplate>
            <UniformGrid Columns="3"/>
        </ItemsPanelTemplate>
    </ListView.ItemsPanel>

    <ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem">
            <Setter Property="HorizontalContentAlignment" 
                    Value="Stretch"/>
        </Style>
    </ListView.ItemContainerStyle>

    <ListView.ItemTemplate>
        <DataTemplate>
            <Grid Width="100"
                  Height="100"
                  Background="{Binding Color}">
                <StackPanel Margin="10">
                    <TextBlock Text="{Binding Title}"/>
                    <TextBlock Text="{Binding Description}"/>
                </StackPanel>
            </Grid>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

Я хотел бы поместить эту часть в ResourceDictionary

<ListView.ItemsPanel>
    <ItemsPanelTemplate>
        <UniformGrid Columns="3"/>
    </ItemsPanelTemplate>
</ListView.ItemsPanel>

<ListView.ItemContainerStyle>
    <Style TargetType="ListViewItem">
        <Setter Property="HorizontalContentAlignment" 
                Value="Stretch"/>
    </Style>
</ListView.ItemContainerStyle>

Но я не так, как, как.Это насколько я получил

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <Style TargetType="ListView">

    </Style>

</ResourceDictionary>

И внутри Style я не могу добавить ListView.ItemContainerStyle Так как мне правильно разделить его в ResourceDictionary?

1 Ответ

0 голосов
/ 03 марта 2019

Словарь ресурсов

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <ItemsPanelTemplate x:Key="lstViewItemsPanelTemplate">
        <UniformGrid Columns="3"/>
    </ItemsPanelTemplate>
    <Style TargetType="ListViewItem" x:Key="lstViewItemContainerStyle">
        <Setter Property="HorizontalContentAlignment" 
                Value="Stretch"/>
    </Style>
    <DataTemplate x:Key="lstViewItemTemplate">
        <Grid Width="100"
              Height="100"
              Background="{Binding Color}">
            <StackPanel Margin="10">
                <TextBlock Text="{Binding Title}"/>
                <TextBlock Text="{Binding Description}"/>
            </StackPanel>
        </Grid>
    </DataTemplate>
</ResourceDictionary>

Просмотр списка

<ListView ItemsPanel="{StaticResource lstViewItemsPanelTemplate}"
          ItemContainerStyle="{StaticResource lstViewItemContainerStyle}"
          ItemTemplate="{StaticResource lstViewItemTemplate}"/>

или

Вы также можете определить глобальный Style в ResourceDictionary.xaml как,

<Style TargetType="ListView">
    <Setter Property="ItemsPanel" Value="{StaticResource lstViewItemsPanelTemplate}"/>
    <Setter Property="ItemContainerStyle" Value="{StaticResource lstViewItemContainerStyle}"/>
    <Setter Property="ItemTemplate" Value="{StaticResource lstViewItemTemplate}"/>
</Style>
...