DataTemplateTrigger无法使用datatemplateselector

时间:2012-07-26 14:01:39

标签: wpf triggers datatemplate

我已经定义了一个具有触发器的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>

2 个答案:

答案 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