2010-10-27 64 views
0

我在我的XAML中有一個ListView,我試圖掛接一個MultiBinding轉換器。XAML工具提示數據上下文和多重綁定

<ListView 
Grid.Column="4" 
Grid.Row="1" 
Grid.RowSpan="5" 
Margin="8,0,8,8" 
HorizontalAlignment="Stretch" 
      Name="lvDisplayType" 
ItemsSource="{Binding Path=Types}" 
SelectedItem="{Binding Path=Current.Opt}" 
VerticalAlignment="Stretch" 
SelectionChanged="lvType_SelectionChanged" 
SelectionMode="Single" 
      ScrollViewer.HorizontalScrollBarVisibility="Disabled"> 
      <ListView.ItemTemplate> 
       <DataTemplate> 
        <DockPanel 
    HorizontalAlignment="Center"> 
         <TextBlock 
    Text="{Binding Path=., Converter={StaticResource DisplayConverter}}" 
    HorizontalAlignment="Center" 
    Padding="6" 
    VerticalAlignment="Center" 
          TextWrapping="Wrap"> 
          <TextBlock.ToolTip> 
           <ToolTip DataContext="{Binding Path=Current}"> 
            <MultiBinding Converter="{StaticResource OptConverter}"> 
             <Binding Path="Opt" /> 
             <Binding Path="Type" /> 
            </MultiBinding> 
           </ToolTip> 
          </TextBlock.ToolTip> 
         </TextBlock>  
        </DockPanel> 
       </DataTemplate> 
      </ListView.ItemTemplate> 
     </ListView> 

的代碼不工作是:

       <TextBlock.ToolTip> 
           <ToolTip DataContext="{Binding Path=Current}"> 
            <MultiBinding Converter="{StaticResource OptConverter}"> 
             <Binding Path="Opt" /> 
             <Binding Path="Type" /> 
            </MultiBinding> 
           </ToolTip> 
          </TextBlock.ToolTip> 

目前轉換器是返回一個空字符串作爲既 '值[0] == System.Windows.DependencyProperty.UnsetValue' 和「值[ 1] == System.Windows.DependencyProperty.UnsetValue'返回true。這些值從未設置。

由於邏輯樹(我認爲)TextBlock.ToolTip默認綁定是'Current.Opt'。對於MultiBinding,我還需要引用'Type',它是'Current'的另一個屬性。所以爲了解決這個問題,我設置了'ToolTip DataContext =「{Binding Path = Current}」' - 這不像預期的那樣工作 - 我做錯了什麼?

我知道我可以在後面的代碼中輕鬆做到這一點,但我們正在使用MVVM,所以如果可能的話,要避免它。

任何幫助非常感謝!

謝謝

回答

1

嘗試做這樣,

1.Does這給DependencyProperty.UnsetValue的轉換?否則,什麼是進入轉換器?

<TextBlock.ToolTip> 
    <MultiBinding Converter="{StaticResource OptConverter}"> 
     <Binding RelativeSource="{RelativeSource Self}" /> 
     <Binding RelativeSource="{RelativeSource Self}" /> 
    </MultiBinding> 
</TextBlock.ToolTip> 

2.這是否會給Converter中的DependencyProperty.UnsetValue?

<TextBlock.ToolTip> 
    <MultiBinding Converter="{StaticResource OptConverter}"> 
     <Binding RelativeSource="{RelativeSource Self}" Path="Current"/> 
     <Binding RelativeSource="{RelativeSource Self}" Path="Current"/> 
    </MultiBinding> 
</TextBlock.ToolTip> 
+0

感謝您的回覆。 仍然無法正常工作。 它必須與DataContext做。繼承人一個例子: 我的ListView項源是'ItemsSource =「{綁定路徑=類型}」'然後我有一個TextBlock文本爲: Text =「{Binding Path =。}」// This Works Text =「{Binding Path = DisplayTypes}」//這不會: -/ 任何指針? 非常感謝 – 2010-10-28 13:03:21

+0

對不起,它應該是:謝謝你的回覆。還是行不通。它必須與DataContext相關。下面是一個示例:我的ListView項源代碼是'ItemsSource =「{Binding Path = Types}」',然後我有一個TextBlock文本爲:Text =「{Binding Path =。}」// This Works Text =「{Binding路徑=類型}「/ /這不: - /任何指針?非常感謝 - – 2010-10-28 16:03:42

+0

根據信息有點難以分辨,我不知道還有什麼事情發生。但是當我嘗試這樣做時ItemsSource =「{Binding =。}」我得到'{Binding =。'''值不是有效的MarkupExtension表達式。無法解析'Binding =。'...您應該只使用Text = 「{Binding}」在那裏,這意味着你直接綁定到你的DataContext而不是它的屬性 – 2010-10-28 16:33:37