我有一個包含許多項目的列表框。當我將鼠標懸停在某個項目上時,我需要顯示一個相當「重」的彈出窗口。我敢肯定,加載每個項目的彈出窗口是浪費資源,所以我想只有當我將鼠標懸停在項目上時,我修改了項目中的ContentControl模板以包含Popup。這是我到目前爲止有:(簡化版)(此代碼可以被粘貼到Kaxaml)使用觸發器更改ContentControl的模板
<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 - 這會導致帶有Popup的模板消失。有任何想法嗎? 編輯:我可以及實現這一目標(儘管我寧願XAML)
嗨,Dean,謝謝你的回答,但是我正在尋找一個解決方案,我不必爲每個項目加載彈出窗口 - 只對於鼠標懸停的項目。在你的解決方案 - 彈出窗口被加載 - 只是不可見 – Danield 2012-04-27 10:27:13