У нас есть Infragistics XamDatagrid со столбцом, содержащим изображение.
Это изображение может быть видимым или нет в зависимости от свойства ViewModel.Когда это видно, если вы наводите курсор мыши, отображается всплывающее окно.Пожалуйста, смотрите ниже XAML для этого столбца.
<Setter Property="IsEnabled" Value="true" />
<Setter Property="Focusable" Value="false" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataPresenter:CellValuePresenter}">
<Border Background="{StaticResource FrozenColumnBrush}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Image x:Name="BarrierImage"
Grid.Row="0"
Height="16" Width="16"
HorizontalAlignment="Center" VerticalAlignment="Center"
Source="../Images/lock_16.ico"
Visibility="{Binding DataItem.IsBarrierEvent, Converter={StaticResource BooleanToVisibilityConverter}}" >
</Image>
<Grid Grid.Row="1" Visibility="{Binding DataItem.IsBarrierEvent, Converter={StaticResource BooleanToVisibilityConverter}}" >
<Popup
Name="BarrierPopup"
AllowsTransparency="True"
PopupAnimation="Fade"
HorizontalOffset="-35"
VerticalOffset="0"
Behaviors:OpenPopupWhenTooltipOpening.Control="{Binding ElementName=BarrierImage}"
>
<Views:BarrierView DataContext="{Binding DataItem.Barriers}"/>
</Popup>
</Grid>
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
Проблема в том, что мы получаем 200 строк, но только одна имеет IsBarrierEvent = true, поэтому есть только одно изображение и только одно всплывающее окно будет отображаться при наведении курсора.Но оказывается, что WPF создает элемент управления BarrierView для каждой строки.Мы заметили, что при использовании dotTrace для исследования проблем с производительностью.
Есть ли способ предотвратить создание невидимых элементов управления?Мы также пытались связать свойство viewmodel с видимостью главной границы, но они все еще создаются.
Спасибо.
PS - я попытался вставить теги XAML дляСтиль, но он не отображался должным образом