如何解决如何设计此ListViewItem
我希望我的ListViewItem
看起来像这样。如您所见,当ListViewItem
被选中/已经聚焦时,Border
应该改变颜色。
主要问题是我无法在Border
中的ContenPresenter
周围放置ControlTemplate
,因为与带有“描述”-{{ 1}}将位于TextBox
内部。但是我只希望Binding
和Border
在TextBox
内,它可以更改颜色,而不要更改描述(“ Nachname”,“ Vorname”)。
这是我到目前为止使用的XAML。我不知道如何在ControlTemplate中更改边框:
Icon
解决方法
您可以将Trigger
添加到名为Border
的{{1}}中,如下所示:
PART_Border
请注意,为了测试我的代码,我用标准颜色替换了一些映射到您代码中某些颜色的<Border x:Name="PART_Border" Grid.Row="1" BorderThickness="1" >
<Border.Style>
<Style TargetType="Border">
<Setter Property="BorderBrush" Value="DarkGray" />
<Style.Triggers>
<DataTrigger Binding="{Binding IsSelected,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListViewItem}}}"
Value="True" >
<Setter Property="BorderBrush" Value="Black"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
<Grid Background="White">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="48" />
</Grid.ColumnDefinitions>
<TextBox Grid.Column="0"
Text="{Binding SearchText}" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" FontSize="15" Padding="12,15" BorderThickness="0" />
<Border Grid.Column="1" Background="Gray" Margin="8">
<Rectangle Width="20" Height="20" />
</Border>
</Grid>
</Border>
。
出于相同的原因,我还用StaticResource
替换了图标。
尝试使用您的IsSelected
触发器:
<Trigger Property="IsSelected" Value="True">
<Setter TargetName="PART_Border" Property="BorderBrush" Value="Fuchsia" />
<Setter TargetName="PART_Border" Property="BorderThickness" Value="1" />
</Trigger>
,
您可以将Style
和DataTrigger
绑定到父IsSelected
的{{1}}属性,并添加到{{1} }:
ListViewItem
请注意,您需要使用Border
的{{1}}设置器来设置属性(DataTemplate
)的默认值,以便在{{1} }。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。