Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WPF, Silverlight Новый топик    Ответить
 ToolTip binding  [new]
vb_sub
Member

Откуда:
Сообщений: 468
Всем привет, реализую следующий функционал:
Есть главная View, у нее есть ListView со своим набором объектов.
Хочу чтобы при наведении курсора появлялась tooltip c сгенерированным QR кодом.
View:
        <ListView  Grid.Column="1"  ItemsSource="{Binding persons}"  >
            <ListView.Style>
                <Style TargetType="{x:Type ListView}">
                    <Style.Triggers>
                        <Trigger Property="ItemsSource" Value="{x:Null}">
                            <Setter Property="Visibility" Value="Collapsed"   />
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </ListView.Style>

            <ListView.ItemTemplate>
                <DataTemplate DataType="{x:Type models:person}">
                    <Border>
                        <DockPanel >
                            
                            <StackPanel Orientation="Horizontal"   DockPanel.Dock="Left"    >

                                <TextBlock Text="{Binding F}" Margin="5 0 5 0"
                                            VerticalAlignment="Center" />

                                <TextBlock DockPanel.Dock="Right"
                                           FontFamily="{StaticResource FontAwesome}" 
                                           FontSize="20"  
                                           Text="&#xf029;"
                                           Foreground="Darkcyan"
                                           VerticalAlignment="Center"
                                           ToolTipService.ShowDuration="12000">
                                    <TextBlock.ToolTip >
                                        <ToolTip 
                                             IsOpen="{Binding DataContext.isToolTipOpen}"
                                             DataContext="{Binding RelativeSource={RelativeSource
                                             Mode=Self},Path=PlacementTarget.Parent}">
                                            
                                        <Image                                            
                                         Source="{Binding DataContext.imgSource}"                                         
                                         RenderOptions.BitmapScalingMode="NearestNeighbor"
                                         RenderOptions.EdgeMode="Aliased"
                                         MinHeight="300" MinWidth="300"/>
                                        </ToolTip>

                                    </TextBlock.ToolTip>
                                </TextBlock>
                            </StackPanel>

                        </DockPanel>
                    </Border>
                </DataTemplate>
            </ListView.ItemTemplate>
            
        </ListView>


viewmodel

public class VM
{
 public ObservableCollection<person> persons { get;  set; }
}


Проблема в том, что при байндинге из tooltip я могу максимум добраться до датаконтекста класса person, соответственно, чтобы сгенерировать QR (присвоить свойство imgSource класса person) мне в солюшн с моделями нужно тянуть еще много разных зависимостей (генерация QR кода, генерация ID, presentation core и тд.)- что очень плохо смешивать логику. Очень хотелось бы реализовать эту логику в ViewModel в виде команды с параметром-при открытии tooltip во viewModel срабатывает команда с параметром person, на котором открыли tooltip, и во ViewModel я присваиваю свойство imgSource. Для этого нужно реализовать в tooltip интерфейс ICommandSource. Но как прорваться к датаконтексту главной View? Из-за того, что tooltip не является элементом визуального дерева , соответственно findancestor не работает. Всем спасибо
10 окт 18, 19:25    [21700936]     Ответить | Цитировать Сообщить модератору
Все форумы / WPF, Silverlight Ответить