В моем 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>
В настоящее время конвертер возвращает пустую строку, так как '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}"' - это не работает должным образом - что я делаю не так?
Я знаю, что я мог бы легко сделать это в Кодексе, но мы используем MVVM, поэтому хотели бы избежать этого, если это возможно.
Любая помощь с благодарностью!
Спасибо