私はこの質問が以前に何度も尋ねられたことを知っています、私はここでいくつかの解決策をオンラインで見つけました、しかし私はそれらのどれも機能させることができませんでした。カスタムコントロールにいくつかの要素があり、そのうちの1つにバインドされたツールチップを配置したいと思います。これは私がこれまでに持っているものです。
<UserControl x:Class="DirectGraphicsControl.ColorBarView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:DirectGraphicsControl="clr-namespace:Windows.DirectGraphicsControl" mc:Ignorable="d"
SizeChanged="UserControlSizeChanged" MinWidth="95">
<DockPanel LastChildFill="True" Width="80" x:Name="_mainDockPanel">
<TextBlock DockPanel.Dock="Top" x:Name="_title" x:FieldModifier="public" HorizontalAlignment="Center" Margin="0,2,0,2"/>
<StackPanel Orientation="Vertical" DockPanel.Dock="Bottom" Margin="0,2,0,2"
x:Name="_bottomLabelsRegion" x:FieldModifier="public">
<TextBlock x:Name="_unitName" x:FieldModifier="public" HorizontalAlignment="Center" VerticalAlignment="Bottom"/>
</StackPanel>
<Grid DataContext="{Binding ElementName=_mainDockPanel.Parent, Path=MyTooltip}" >
<DirectGraphicsControl:DirectGraphicsControl x:Name="_directGraphicsControl"
MouseDoubleClick="HandleColorBarMouseDoubleClick" x:FieldModifier="public">
<DirectGraphicsControl:DirectGraphicsControl.ToolTip>
<ToolTip Content="{Binding Path=PlacementTarget.DataContext,
RelativeSource={RelativeSource Self}}"/>
</DirectGraphicsControl:DirectGraphicsControl.ToolTip>
</DirectGraphicsControl:DirectGraphicsControl>
</Grid>
</DockPanel>
これがコードビハインドです。
/// <summary>
/// The tool tip text
/// </summary>
public static readonly DependencyProperty TooltipProperty =
DependencyProperty.Register(Reflection.GetPropertyName<ColorBarView>(m => m.MyTooltip),
typeof(string), typeof(ColorBarView));
/// <summary>
/// The tool tip text
/// </summary>
public string MyTooltip
{
get { return "Test from binding"; }
}
コードビハインドプロパティは、実際に機能するようになるまで、ハードコードされた文字列を返すだけです。その後、希望する計算値が返されます。現在、マウスオーバーすると空のボックスが表示されます。ツールチップのテキストをxamlに直接追加すると、問題なく表示されます。これにより、バインディングの場所が見つからないと思います。
私はwpfに非常に慣れていないので、どんな提案も素晴らしいでしょう。
ありがとうございました、