Wpf 将样式从资源应用到ListView.ItemContainerStyle
我在VS 2012中与XAML/WPF合作。我承认我还不太了解模板和样式 我在application.xaml文件中定义了如下样式:Wpf 将样式从资源应用到ListView.ItemContainerStyle,wpf,xaml,Wpf,Xaml,我在VS 2012中与XAML/WPF合作。我承认我还不太了解模板和样式 我在application.xaml文件中定义了如下样式: <Style x:Key="ContactGroups" TargetType="ListViewItem"> <!-- Styling omitted here --> </Style> 现在我想把这个样式应用到我的列表视图中,但是我不知道在哪里应用这个样式,也就是说,在哪里放置设置样式的代码。为了缩短时间,我省
<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>
使用标记扩展设置ListBox的ItemContainerStyle
上的样式:
<ListView ItemsSource="{Binding Groups}"
SelectedItem="{Binding Path=SelectedGroup, Mode=OneWayToSource}"
ItemContainerStyle="{StaticResource ContactGroups}" >
我不确定您是否只想将此样式应用于此列表,但如果不想,您可以从样式中删除
x:Key=“ContactGroups”
,并将其应用于所有列表项
如果您希望仅针对此listview,则可以选择将样式添加到列表视图的资源中:
<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中定义。运行和编译时不会出现错误,但我的样式没有得到应用。我真的不明白怎么会这样。当获取正在使用的颜色的十六进制数并在我的XAML(或整个应用程序)中搜索它们时,颜色不会出现在任何地方。我怀疑你的答案是正确的,我还有其他一些问题。是的,关于你发布的问题。这就是你实现它的方式。不确定你的其他问题。考虑在你的风格中打开另一个问题的细节,这样它可以被更多的人看到。我认为这可能是一个赢8。请看我的新帖子:谢谢,我想这可能会为我指明正确的方向。我想知道我是否有另一个“全局”风格应用于我的列表,导致了我在上面的评论中提到的问题。谢谢你关于使用当地资源的建议。实际上,我现在正试图将我的样式从xaml窗口中移出,因为该窗口变得太复杂且难以阅读。那样的话,我还有一个选择,你可能更喜欢。我会把它加在上面。