我现在尝试了一段时间并在网上搜索但没有成功......现在我敢自己在stackoverflow上提问。
因此,目的是将 a 的 theItemContainerStyle
和 theContentTemplate
的定义分开ListBoxItem
。我已经ListBoxItemStyle
在 aResourceDictionary
和两个不同DataTemplates
的Window.Resources
.
我现在喜欢ListBoxItem
根据 中定义的样式设置样式,并使用触发器 ( )ResourceDictionary
更改样式。DataTemplate
IsMouseOver
我的(不工作)代码看起来像这样:
<ListBox HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="20,60,10,10"
Grid.Row="1" Grid.Column="0"
PreviewMouseMove="DragMove_PreviewMouseMove"
PreviewMouseLeftButtonDown="Drag_PreviewMouseLeftButtonDown"
ItemsSource="{Binding Persons}" VerticalContentAlignment="Center"
Style="{StaticResource DefaultListBoxStyle}">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="Style" Value="{StaticResource DefaultListBoxItemStyle}"/>
<Setter Property="ContentTemplate" Value="{StaticResource PersonsListBoxItemTemplate_default}"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="ContentTemplate" Value="{StaticResource PersonsListBoxItemTemplate_infoButtons}"/>
</Trigger>
</Style.Triggers>
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
其中DefaultListBoxStyle
是 中定义的样式ResourceDictionary
,PersonsListBoxItemTemplate_default
&PersonsListBoxItemTemplate_infoButtons
是 中定义的 DataTemplates Window.Resources
。
现在我得到一个错误,样式对象不能对其所属对象的样式属性产生影响。
我尝试了不同的方法,但没有成功......我也尝试过先定义样式然后更改模板,但它也不起作用。
感谢大家的帮助!