Can not show control in column header on IsMouseOver

Nov 7, 2008 at 2:00 PM

It is about visibility of a button in the column header being dependent on the IsMouseOver.<o:p></o:p>

This one works just fine:<o:p></o:p>

<o:p> </o:p>

        <Style x:Key="OnMouseOverVisible"><o:p></o:p>

            <Style.Triggers><o:p></o:p>

                <DataTrigger Binding="{Binding Path=IsMouseOver,<o:p></o:p>

                                               RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type toolkit:DataGridColumnHeader}}}" <o:p></o:p>

                             Value="True"><o:p></o:p>

                    <Setter Property="Button.Visibility" Value="Hidden"/><o:p></o:p>

                </DataTrigger><o:p></o:p>

            </Style.Triggers><o:p></o:p>

        </Style><o:p></o:p>

        <o:p></o:p>

        <Style TargetType="{x:Type toolkit:DataGridColumnHeader}"><o:p></o:p>

            <Setter Property="VerticalContentAlignment" Value="Center" /><o:p></o:p>

            <Setter Property="ContentTemplate"><o:p></o:p>

                <Setter.Value><o:p></o:p>

                    <DataTemplate><o:p></o:p>

                        <StackPanel Orientation="Horizontal"><o:p></o:p>

                            <TextBlock Text="{Binding}" /><o:p></o:p>

                            <Button Content="f" Style="{StaticResource OnMouseOverVisible}"/><o:p></o:p>

                        </StackPanel><o:p></o:p>

                    </DataTemplate><o:p></o:p>

                </Setter.Value><o:p></o:p>

            </Setter><o:p></o:p>

        </Style><o:p></o:p>

<o:p> </o:p>

<o:p> </o:p>

This one has zero effect:<o:p></o:p>

<o:p> </o:p>

        <Style x:Key="OnMouseOverVisible"><o:p></o:p>

            <Style.Triggers><o:p></o:p>

                <DataTrigger Binding="{Binding Path=IsMouseOver,<o:p></o:p>

                                               RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type toolkit:DataGridColumnHeader}}}" <o:p></o:p>

                             Value="True"><o:p></o:p>

                    <Setter Property="Button.Visibility" Value="Visible"/><o:p></o:p>

                </DataTrigger><o:p></o:p>

            </Style.Triggers><o:p></o:p>

        </Style><o:p></o:p>

        <o:p></o:p>

        <Style TargetType="{x:Type toolkit:DataGridColumnHeader}"><o:p></o:p>

            <Setter Property="VerticalContentAlignment" Value="Center" /><o:p></o:p>

            <Setter Property="ContentTemplate"><o:p></o:p>

                <Setter.Value><o:p></o:p>

                    <DataTemplate><o:p></o:p>

                        <StackPanel Orientation="Horizontal"><o:p></o:p>

                            <TextBlock Text="{Binding}" /><o:p></o:p>

                            <Button Content="f" Visibility=”Hidden” Style="{StaticResource OnMouseOverVisible}"/><o:p></o:p>

                        </StackPanel><o:p></o:p>

                    </DataTemplate><o:p></o:p>

                </Setter.Value><o:p></o:p>

            </Setter><o:p></o:p>

        </Style><o:p></o:p>

<o:p> </o:p>

Coordinator
Nov 13, 2008 at 3:06 PM
Try this out:

 

 

<Style TargetType="{x:Type dg:DataGridColumnHeader}">
    <Setter Property="ContentTemplate">
        <Setter.Value>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="{Binding}" />
                    <Button Name="btn_f" Content="f" Visibility="Hidden" /> 
                </StackPanel>
                <DataTemplate.Triggers>
                    <Trigger Property="IsMouseOver" Value="true">
                        <Setter TargetName="btn_f" Property="Visibility" Value="Visible" />
                    </Trigger>
                </DataTemplate.Triggers>
            </DataTemplate>
        </Setter.Value>
    </Setter>
</Style>