我在VS 2012中使用XAML / WPF。我承认我还没有真正理解模板和样式。
我在application.xaml文件中定义了一个样式,如下所示:
<Style x:Key="ContactGroups" TargetType="ListViewItem">
<!-- Styling omitted here -->
</Style>
现在我想将这个样式应用到我的列表视图中,但我无法弄清楚应用这个样式的位置,即在哪里放置代码来设置样式。我在这里省略了很多属性来缩短时间:
<ListView ItemsSource="{Binding Groups}" SelectedItem="{Binding Path=SelectedGroup, Mode=OneWayToSource}" >
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemTemplate>
<DataTemplate>
<Grid Width="140" Height="25">
<Grid.RowDefinitions>
<RowDefinition Height="2*" />
</Grid.RowDefinitions>
<Label Content="{Binding Name}" ToolTip="{Binding Name}" />
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
答案 0 :(得分:5)
使用StaticResource标记扩展程序在ListBox的ItemContainerStyle
上设置样式:
<ListView ItemsSource="{Binding Groups}"
SelectedItem="{Binding Path=SelectedGroup, Mode=OneWayToSource}"
ItemContainerStyle="{StaticResource ContactGroups}" >
答案 1 :(得分:1)
我不确定您是否只希望将此样式应用于此列表,但如果不是,您只需从样式中删除x:Key="ContactGroups"
即可将其应用于所有列表项。
如果您只想定位此列表视图,则可以选择将样式添加到列表视图的资源中:
<ListView ItemsSource="{Binding Groups}" SelectedItem="{Binding Path=SelectedGroup, Mode=OneWayToSource}" >
<ListView.Resources>
<Style TargetType="ListViewItem">
<!-- Styling omitted here -->
</Style>
</ListView.Resources>
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemTemplate>
<DataTemplate>
<Grid Width="140" Height="25">
<Grid.RowDefinitions>
<RowDefinition Height="2*" />
</Grid.RowDefinitions>
<Label Content="{Binding Name}" ToolTip="{Binding Name}" />
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
编辑:根据您的评论,这可能是您想采取的方法:
<ListView.Resources>
<Style TargetType="ListViewItem" BasedOn="{StaticResource ContactGroups}" />
</ListView.Resources>
这样你的风格就会在App.xaml中定义。