2017-08-09 1 views
-1

Ich versuche, einen benutzerdefinierten Expander mit einem ControlTemplate zu erstellen. Meine erste Frage ist: Wo kann ich den Inhalt des Expanders (nicht den auf dem Expander angezeigten Text, den Inhalt, der sichtbar wird, wenn Sie auf den Expander klicken) setzen?(WPF) Wie kann ich ein Expander-Control-Template mit Inhalt füllen?

Dies ist mein Code in App.xaml:

<Application.Resources> 

     <ControlTemplate x:Key="FileExpanderButton" TargetType="{x:Type ToggleButton}"> 
      <Image Name="BrowseUsedFiles" Source="F:\AudioNodeGUI_XAML\images\Browse_used_files.jpg"> 

      </Image> 
     </ControlTemplate> 

     <ControlTemplate x:Key="FileExpander" TargetType="{x:Type Expander}"> 
      <DockPanel> 
       <ToggleButton x:Name="ExpanderButton" Template="{StaticResource FileExpanderButton}" OverridesDefaultStyle="True" DockPanel.Dock="Top"/> 
       <ContentPresenter x:Name="ExpanderContent" 
          Visibility="Collapsed" 
          Content="{TemplateBinding Content}" 
          DockPanel.Dock="Bottom" /> 
      </DockPanel> 
      <ControlTemplate.Triggers> 
       <Trigger Property="IsExpanded" Value="True"> 
        <Setter TargetName="ExpanderContent" 

       Property="Visibility" Value="Visible"/> 
       </Trigger> 
      </ControlTemplate.Triggers> 
     </ControlTemplate> 

    </Application.Resources> 
</Application> 

Und noch eine Frage: Was genau das Content tut? Kann ich es einfach durch meinen Inhalt ersetzen?

+0

Es ist der ContentPresenter, der den Inhalt darstellt. Es sollte funktionieren, wenn Sie die IsExpanded-Eigenschaft des Expander auf True festlegen. – mm8

+0

Also mit dem ContentPresenter aber ohne Templatebinding kann ich in der main.xaml Datei einfach folgendes eingeben:

+0

denke ich nicht Ich verstehe deine Frage. Aber ja, Sie müssen einen Expander erstellen, der Ihren benutzerdefinierten Style verwendet. – mm8

Antwort

0

Expander ist ein ContentControl, was bedeutet, dass es Inhalt enthält (andere XAML), aber dieser Inhalt ist nicht in der Kontrollschablone definiert, er wird von jedem Benutzer definiert, der das Steuerelement verwendet.

ContentPresenter wird innerhalb der Steuerelementvorlage verwendet, um diesen Inhalt anzuzeigen, so wie Sie es scheinbar tun.

Verwandte Themen