我已经定义了一个具有触发器的datatemplate,如果选择了该项,则该触发器应该只是更改背景颜色。由于某种原因,它似乎没有起作用。
<DataTemplate x:Key="existingDeviceTemplate" >
<StackPanel Orientation="Horizontal">
<Border Name="bd" Background="Green" BorderThickness="1" Padding="5">
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding Path=Name}" Width="200"/>
<Button Grid.Column="1" Content="Settings" Click="cmdSettings_Clicked"/>
<Button Grid.Column="2" Content="Delete" Click="cmdDelete_Clicked"/>
</Grid>
</Border>
</StackPanel>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding IsSelected}" Value="true" >
<Setter TargetName="bd" Property="Background" Value="Red"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
答案 0 :(得分:1)
尝试绑定IsSelected
的{{1}}属性:
ListBoxItem
如果您的列表控件是<DataTemplate.Triggers>
<DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource AncestorType={x:Type ListBoxItem}}}" Value="true">
<Setter TargetName="bd" Property="Background" Value="Red" />
</DataTrigger>
</DataTemplate.Triggers>
,则必须将ListView
替换为x:Type ListBoxItem
。
答案 1 :(得分:1)
您的绑定模型是否有名为IsSelected的属性? 我的猜测是你的意思是行的IsSelected属性。 如果是这种情况,你需要将一个与FindAncestor的RelativeSource绑定放到ListItem