#c# #.net #wpf #mvvm #resourcedictionary
#c# #.net #wpf #mvvm #resourcedictionary
Вопрос:
Итак, у меня есть этот 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:
Словарь ресурсов
<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>