2014-08-30 69 views
0

我是WPF,C#和XAML(來自obj-c)的新手我只想弄清楚如何將它放到擴展控件的按鈕隱藏處,並出現在鼠標上方?謝謝WPF中的擴展按鈕

回答

1

爲此,您將不得不借助ControlTemplate自定義擴展控制。您可以在控件模板中爲切換按鈕創建一個圖像,其默認來源不會是任何東西。鼠標懸停後,可以給出圖像的路徑並且圖像可見。

<ControlTemplate x:Key="ExpanderToggleButtonTemplate" TargetType="{x:Type ToggleButton}"> 
     <Border x:Name="ExpanderToggleButtonBorder" Height="30"> 
      <Grid> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="*"/> 
        <ColumnDefinition Width="Auto"/> 
       </Grid.ColumnDefinitions> 
       <Image Name="img" HorizontalAlignment="Left"></Image> 
       <ContentPresenter x:Name="HeaderContent" Grid.Column="0" Margin="50,0,0,0" 
           ContentSource="Content" > 
       </ContentPresenter> 
      </Grid> 
     </Border> 
     <ControlTemplate.Triggers> 
      <Trigger Property="IsMouseOver" 
          Value="true"> 
       <Setter Property="Source" 
           Value="path of whichever image is required" 
           TargetName="img"/> 
      </Trigger> 
     </ControlTemplate.Triggers> 
    </ControlTemplate> 
    <ControlTemplate x:Key="ExpanderTemplate" TargetType="{x:Type Expander}"> 
     <DockPanel> 
      <ToggleButton DockPanel.Dock="Top" 
          Template="{StaticResource ExpanderToggleButtonTemplate}" Content="{TemplateBinding Header}" 
          IsChecked="{Binding Path=IsExpanded, RelativeSource={RelativeSource TemplatedParent}}" OverridesDefaultStyle="True"> 
      </ToggleButton> 
      <ContentPresenter x:Name="ExpanderContent" Grid.Row="1" Visibility="Collapsed" DockPanel.Dock="Bottom"/> 
     </DockPanel> 
     <ControlTemplate.Triggers> 
      <Trigger Property="IsExpanded" Value="True"> 
       <Setter TargetName="ExpanderContent" Property="Visibility" Value="Visible"/> 
      </Trigger> 

     </ControlTemplate.Triggers> 
    </ControlTemplate> 
+0

這是唯一的方法嗎?我可以設置 ,然後將其設置爲在鼠標懸停事件處理程序中顯示?我做到了,但this.isVisible或this.Show不工作。就像我說的,我是C#的新手 – 2014-08-30 17:38:07

+0

@ user3593696你需要什麼?整個擴展器控件應該隱藏,除了鼠標懸停或擴展器切換按鈕和/或標題被隱藏,除了鼠標懸停之外?因爲擴展頭包含切換按鈕以及標題文本。 – Bhaumik 2014-08-30 20:48:15

+0

我正在嘗試複製Google新聞文章容器。它包含一個鏈接和簡短描述,當您將鼠標放在它上面時,容器的右上角會出現一個按鈕,然後當您點擊該按鈕時,容器會展開並顯示說明。我試圖在XAML/C#中複製它 – 2014-08-30 23:48:40