0

我已经定义了一个数据模板,它有一个触发器,如果​​选择了该项目,该触发器应该简单地改变背景颜色。由于某种原因,它似乎不起作用。

        <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>
4

2 回答 2

1

尝试绑定到的IsSelected属性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>

如果您的列表控件是 aListView您必须替换x:Type ListBoxItemx:Type ListViewItem.

于 2012-07-26T17:57:16.740 回答
1

您的绑定模型是否有一个名为 IsSelected 的属性?我的猜测是你的意思是行的 IsSelected 属性。如果是这种情况,您需要将带有 FindAncestor 的 RelativeSource 绑定到 ListItem

于 2012-07-27T18:15:51.623 回答