0

うまく機能するカスタム ツールチップ スタイルがありますが、場合によっては、矢印 (パス セクション) を非表示にしたり、ツールチップを別の場所に配置したりしたいと考えています。どうすればそれを達成でき、実際にどのように設定できますか? 99% の場合、ツールヒントは XAML とバインディングを介して設定されますが、コードとToolTipService

<Style x:Key="{x:Type ToolTip}"
       TargetType="ToolTip">
  <Setter Property="OverridesDefaultStyle"
          Value="true" />
  <Setter Property="HasDropShadow"
          Value="True" />
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="ToolTip">
        <StackPanel>
          <Border CornerRadius="3"
                  HorizontalAlignment="Center"
                  VerticalAlignment="Top"
                  Padding="10,7"
                  BorderThickness="0"
                  Background="#e5323232">
            <StackPanel>
              <TextBlock FontFamily="Arial"
                         FontSize="12"
                         Text="{TemplateBinding Content}"
                         Foreground="#f0f0f0" />
            </StackPanel>
          </Border>
          <Path Margin="10,0,0,0"
                Fill="#e5323232"
                Data="M 0 0 L 6 6 L 12 0 Z" />
        </StackPanel>
      </ControlTemplate>
    </Setter.Value>
  </Setter>

  <Setter Property="Placement"
          Value="Top" />
  <Setter Property="HorizontalOffset"
          Value="-8" />
  <Setter Property="VerticalOffset"
          Value="0" />
</Style>
4

2 に答える 2

0

これらのコントロールを配置できる場合があります。

<Path Margin="10,-0.5,0,0" Fill="#e5323232" Data="M 0 0 L 6 6 L 12 0 Z"/>
于 2013-04-12T16:50:22.150 に答える
0

ツールチップを動的な位置に表示したいので、次の解決策を見つけました。まず、1つのユーザーコントロール「SimplePopupContent」を追加しました

public partial class SimplePopupContent : UserControl
    {
        public SimplePopupContent(string value)
        {
            InitializeComponent();
            textBlockPopUp.Text = value;
        }

        private void LayoutRoot_MouseLeave(object sender, MouseEventArgs e)
        {
            this.Visibility = Visibility.Collapsed;
        }
    } 

テキストブロックのツールチップを表示したい。

TextBlock t = new TextBlock();
Popup simplePopup = new Popup();

そして、テキストブロックのマウス入力イベントにコードを次のように記述しました

t.MouseEnter += (s, args) =>
                            {    
                                this.simplePopup.Child = new SimplePopupContent("Hi");
                             this.simplePopup.Margin = new Thickness(XOffset ,70, 0,0);
                              this.simplePopup.Width = 30;
                                this.simplePopup.Child.MouseLeave += new MouseEventHandler(Child_MouseLeave);
                                this.simplePopup.IsOpen = true;
                            };

public void Child_MouseLeave(object sender, MouseEventArgs e)
        {           
           this.simplePopup.IsOpen = false;

        }

これがあなたを助けることを願っています。

于 2013-04-18T14:54:02.640 に答える