当我将工具提示的内容绑定到父元素的内容时,它将内容从父元素中取出

时间:2015-02-27 19:48:40

标签: wpf xaml

我有一个ToggleButton,我想要一个工具提示,它显示与按钮相同的内容。我可以在按钮上成功设置工具提示以使用按钮的内容。 ToggleButton实例和ToolTip的XAML位于:

<ToggleButton Name="toggleButton" IsTabStop="False"
                      Background="{TemplateBinding Background}"
                      BorderBrush="{TemplateBinding BorderBrush}"
                      BorderThickness="{TemplateBinding BorderThickness}"
                      Template="{StaticResource MultiSelectComboBoxToggleButtonTemplate}"
                      IsChecked="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=IsDropDownOpen, Mode=TwoWay}"
                      ToolTip="{Binding ElementName=toggleButton, Path=Content}"
                      >

按钮的模板位于:

<ControlTemplate x:Key="MultiSelectComboBoxToggleButtonTemplate" TargetType="{x:Type ToggleButton}">
    <Border BorderThickness="{TemplateBinding BorderThickness}"  
                Background="{TemplateBinding Background}" 
                BorderBrush="{TemplateBinding BorderBrush}"
                SnapsToDevicePixels="true">
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition/>
                <ColumnDefinition Width="Auto"/>
            </Grid.ColumnDefinitions>

            <ContentPresenter Content="{TemplateBinding Content}"/>

            <Border Name="arrowBorder" Grid.Column="1" Width="16" BorderBrush="{TemplateBinding BorderBrush}">
                <Path HorizontalAlignment="Center" VerticalAlignment="Center" 
                                  Fill="{TemplateBinding BorderBrush}" Data="M 0 0 L 7 0 L 3.5 4 Z" />
            </Border>
        </Grid>
    </Border>
    <ControlTemplate.Triggers>

        <Trigger Property="IsMouseOver" Value="True">
            <Setter TargetName="arrowBorder" Property="Background" Value="{StaticResource ActiveButtonBrush}" />
            <Setter TargetName="arrowBorder" Property="BorderThickness" Value="1,0,0,0" />                
        </Trigger>
        <Trigger Property="IsChecked" Value="True">
            <Setter TargetName="arrowBorder" Property="Background" Value="{StaticResource ActiveButtonBrush}" />
            <Setter TargetName="arrowBorder" Property="BorderThickness" Value="1,0,0,0" />
        </Trigger>
    </ControlTemplate.Triggers>
</ControlTemplate>

MyToolTip控件绑定到父ToggleButton的Content属性。绑定按预期工作。当您开始使用该控件时,该按钮会显示其内容:

enter image description here

但是,当您将鼠标悬停在按钮上以激活工具提示时,工具提示会显示内容,而按钮会丢失其内容:

enter image description here

在其他时间使用应用程序中的控件时,按钮内容不会出现,但工具提示会继续按预期工作。

为什么会这样?我希望能够同时在两个地方显示内容。

0 个答案:

没有答案