2012-11-05 71 views
3

我知道這個問題之前已經提過很多次了,我已經在網上找到了一些解決方案,但是我不能讓它們中的任何一個工作。我有一個自定義控件的幾個元素,我想在其中的一個上綁定一個工具提示。這是我迄今爲止所擁有的。如何將工具提示數據綁定到用戶控件的一部分?

<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很新,所以任何建議都會很棒。

謝謝

回答

1

嘗試改變依賴屬性:

public static readonly DependencyProperty TooltipProperty = 
    DependencyProperty.Register(Reflection.GetPropertyName<ColorBarView>(m => m.MyTooltip), 
           typeof(string), typeof(ColorBarView),new PropertyMetadata("Test Value")); 

,並綁定:

<Grid DataContext="{Binding ElementName=_myControl, Path=MyTooltip}" > 
+0

這工作,以消除輸出窗口中發現的綁定錯誤。儘管我仍然沒有在工具提示中獲得價值,但它只是一個空白的框。 –

+0

嘗試第二個 – tillerstarr

+0

我感謝您的協助tillerstarr,感謝您的回覆...我剛剛嘗試過,現在我回到在輸出窗口中出現錯誤:System.Windows.Data Error:4:Can not找到與參考'ElementName = _myControl'綁定的源代碼。 BindingExpression:路徑= MyTooltip;的DataItem = NULL;目標元素是'ToolTip'(Name ='');目標屬性是'內容'(類型'對象') –

1

查看Visual Studio輸出選項卡。 XAML綁定錯誤會打印在那裏,應該很容易從那裏發現問題。

+0

我可以看到我現在做的與它沒有找到綁定的問題。我不知道如何解決這個問題。我會認爲應該沒有問題找到文件後面的代碼綁定到一個屬性。以下是輸出選項卡中的錯誤:System.Windows.Data錯誤:40:BindingExpression路徑錯誤:未在'對象'''''DockPanel'(Name ='_ mainDockPanel')'上找到'MyTooltip'屬性。 BindingExpression:路徑= MyTooltip; DataItem ='DockPanel'(Name ='_ mainDockPanel');目標元素是'Grid'(Name ='');目標屬性是'DataContext'(類型'對象') –

相關問題