我的列表视图将项目数据模板化为标签。我正在为该标签设计一种样式,但我不知道如何访问父级的(ListViewItem) IsSelected 属性。
编辑 - 尝试了下面的建议,但仍然出现异常,这是我的完整代码:
<Style x:Key="ListViewItemStyle" TargetType="ListViewItem">
<Setter Property="SnapsToDevicePixels" Value="true"/>
<Setter Property="OverridesDefaultStyle" Value="true"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListViewItem">
<Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="true">
<GridViewRowPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="{StaticResource WindowBorderBrush}"/>
<Setter Property="Foreground" Value="White"/>
</Trigger>
</Style.Triggers>
</Style>
<Style x:Key="GVLabelStyle"
BasedOn="{StaticResource LabelStyle}"
TargetType="Label">
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Property="{Binding Path=IsSelected, RelativeSource={RelativeSource FindAncestor}}" Value="True"/>
</MultiDataTrigger.Conditions>
<Setter Property="Foreground" Value="White"/>
</MultiDataTrigger>
</Style.Triggers>
</Style>
<DataTemplate x:Key="appTemplate">
<Label Style="{StaticResource GVLabelStyle}"
Content="{Binding ProcessInfo.ProcessName}">
</Label>
</DataTemplate>
<ListView Background="Transparent"
Name="mainContentHolder"
ItemsSource="{Binding}"
BorderBrush="Transparent"
ItemContainerStyle="{StaticResource ListViewItemStyle}">
<ListView.View>
<GridView ColumnHeaderContainerStyle="{StaticResource HeaderStyle}">
<GridViewColumn Header="Application"
CellTemplate="{StaticResource appTemplate}"/>
<GridViewColumn Header="Window Title"
CellTemplate="{StaticResource wndTemplate}"
Width="300"/>
<GridViewColumn Header="Date"
CellTemplate="{StaticResource dateTemplate}"/>
</GridView>
</ListView.View>
</ListView>
你应该能够使用相对来源 http://msdn.microsoft.com/en-us/library/system.windows.data.relativesource.aspx:
<Condition Property="{Binding Path=IsSelected, RelativeSource={RelativeSource TemplatedParent}}" Value="True" />
编辑:
尝试使用MultiDataTrigger
代替MultiTrigger
以及。查看this https://stackoverflow.com/questions/4649906/wpf-condition-binding-versus-property-xamlparseexception-using-either.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)