我的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,所以如果可能的话,我们希望避免使用它。
任何帮助都非常感谢!
谢谢
答案 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>