我试图更改dataTemplate中的列表项外观,但我在更改所选项目外观时遇到了问题。我发现这样一个问题:Change WPF DataTemplate for ListBox item if selected无法更改wpf中的选定列表项样式
,我试图创建类似的代码作为答案:
<DataTemplate x:Key="NoteTemplate">
<Border Margin="5" BorderThickness="1" BorderBrush="Transparent" Background="#F3EBC2" CornerRadius="4">
<Grid Margin="3" Width="395" MaxHeight="40">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition/>
</Grid.RowDefinitions>
<Grid Row="0" >
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" FontSize="15" FontFamily="Consolas" FontWeight="Bold" Text="{Binding Path=tytul}"/>
<TextBlock Grid.Column="1" FontSize="13" FontFamily="Consolas" FontStyle="Italic" HorizontalAlignment="Right" Text="{Binding Path=data_dodania}"/>
</Grid>
<TextBlock Grid.Row="1" FontSize="13" FontFamily="Consolas" Text="{Binding Path=tresc}"/>
</Grid>
</Border>
</DataTemplate>
<Style TargetType="{x:Type ListBoxItem}" x:Key="ListBoxItem">
<Setter Property="ContentTemplate" Value="{StaticResource NoteTemplate}" />
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="ContentTemplate" Value="{StaticResource NoteTemplate}" />
</Trigger>
</Style.Triggers>
</Style>
(我把同样的模板触发器只是为了检查是否正常工作)
<ListBox Name="listBoxNotatki" Margin="10" ItemContainerStyle="{StaticResource ListBoxItem}" Background="Beige" BorderBrush="Orange" BorderThickness="3"/>
但后来我得到这个错误:
“无法投型‘MS.Internal.NamedObject’的对象键入‘System.Windows.DataTemplate’”
当我将StaticResource更改为DynamicResorce时,我摆脱了这个错误,但是我的样式中的触发器不起作用(所选项目看起来就像在开始处)。
这个链接是死了,我的朋友。 –
谢谢,我添加了一篇类似的文章。 – Xcalibur37