Контекст данных всплывающей подсказки XAML и мультисвязывание - PullRequest
0 голосов
/ 27 октября 2010

В моем 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, поэтому хотели бы избежать этого, если это возможно.

Любая помощь с благодарностью!

Спасибо

1 Ответ

1 голос
/ 27 октября 2010

Попробуйте сделать это таким образом,

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>  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...