我有一个包含许多项目的列表框。当我将鼠标悬停在一个项目上时,我需要显示一个相当“沉重”的弹出窗口。我很确定为每个项目加载弹出窗口是一种资源浪费,所以我想要的只是当我将鼠标悬停在项目上时,我修改了项目中 ContentControl 的模板以包含弹出窗口。这是我目前所拥有的:(简化版)(这段代码可以粘贴到 Kaxaml 中)
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Page.Resources>
<ControlTemplate x:Key="WithPopup" TargetType="ContentControl">
<Grid>
<ContentPresenter Content="{TemplateBinding Content}" Name="Target" />
<Popup PlacementTarget="{Binding ElementName=Target}" IsOpen="True" >
<Border BorderBrush="Red" BorderThickness="1" Background="Pink">
<TextBlock Text="I'd like this to behave like a Popup - not a tooltip!" Margin="10" />
</Border>
</Popup>
</Grid>
</ControlTemplate>
</Page.Resources>
<Grid Height="20" Margin="50,50,0,0" Name="ParentGrid">
<ContentControl>
<TextBlock x:Name="TargetControl" Text="Hover over me!" />
<ContentControl.Style>
<Style TargetType="ContentControl">
<Style.Triggers>
<DataTrigger Binding="{Binding IsMouseOver, ElementName=TargetControl}" Value="True">
<Setter Property="Template" Value="{StaticResource WithPopup}" />
</DataTrigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>
</Grid>
</Page>
问题是,当我尝试将鼠标悬停在弹出窗口上时 - 它消失了(就像工具提示一样),因为我是鼠标离开了原始的 ControlTemplate - 这导致带有弹出窗口的模板消失。有任何想法吗? 编辑:我也有可用的代码隐藏来实现这一点(即使我更喜欢 xaml)