XAML Tooltip Datacontext和Multibinding

时间:2010-10-27 10:42:08

标签: wpf xaml

我的XAML中有一个ListView,我正在尝试连接一个MultiBinding Converter。

<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>

目前,Converter返回一个空字符串,因为'values [0] == System.Windows.DependencyProperty.UnsetValue'和'values [1] == System.Windows.DependencyProperty.UnsetValue'返回true。永远不会设置这些值。

由于逻辑树(我认为),TextBlock.ToolTip默认绑定是'Current.Opt'。对于MultiBinding,我还需要引用'Type',这是'Current'的另一个属性。所以为了解决这个问题,我设置了'ToolTip DataContext =“{Binding Path = Current}”' - 这没有按预期工作 - 我做错了什么?

我知道我可以在Code中轻松地做到这一点,但我们正在使用MVVM,所以如果可能的话,我们希望避免使用它。

任何帮助都非常感谢!

谢谢

1 个答案:

答案 0 :(得分:1)

尝试以这种方式进行,

1.这会在转换器中提供DependencyProperty.UnsetValue吗?否则,转换器会发生什么?

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

2.这会在转换器中提供DependencyProperty.UnsetValue吗?

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