2009-03-04 11 views
0

Ich bin neu im WPF-Programmiermodell. Ich habe einige Anfragen:WPF FrameworkElement

  1. Does Seite Tag in XAML (in einer XBAP-Anwendung) ist vom Typ FrameworkElement?

  2. Wenn ich ein Kindelement habe, sagen wir, Rahmen in einer Seite. Ich übergebe dieses Rahmenelement in einer Funktion in einer anderen Baugruppe. Jetzt versuche ich, zur Eltern-Eigenschaft der Seite aus dem Frame-Steuerelement zurück zu navigieren. Ich kann keinen Verweis auf Page erhalten. Irgendwelche Gedanken?


Die Funktion, die ich in einer anderen Baugruppe bin mit der übergeordneten Seite von Kind

Page getTopParent(FrameworkElement f) 
{ 
    FrameworkElement ct = f; 

    while (true) 
    { 
     if (ct is Page) 
     { 
      break; 
     } 

     ct = (FrameworkElement) 
     ct.Parent; 
    } 
    return ct as Page; 
} 

Please find example XAML 

Kontrolle zu bekommen </Datatrigger> < /DataTemplate.Triggers> ->

 </TabControl.ItemTemplate> 
     <TabControl.ContentTemplate> 
      <DataTemplate> 
       <StackPanel HorizontalAlignment="Left"> 
        <Frame Name="tabContent" Height="520" Width="820" local:WebBrowserBehavior.Source="{Binding Path=CurrentPage}" ContentRendered="tabItem_contentRendered"/> 
       </StackPanel> 
      </DataTemplate> 
     </TabControl.ContentTemplate> 
    </TabControl> 
    <StackPanel Orientation="Horizontal" Name="taskBar" Height="34" VerticalAlignment="Bottom"> 
     <Button Height="23" Name="helpButton" Width="43" Content="Help" Click="helpButton_Click"/> 
    </StackPanel> 
</StackPanel> 

Antwort

0
  1. Ja, genau wie alles andere in XAML. Go here für die offizielle Dokumentation.
1
  1. Ja, Page erbt von FrameworkElement.
  2. Manchmal ist es nicht so einfach, den Baum aufzusteigen, als einfach die Eltern zu überprüfen, besonders wenn Sie Templates verwenden. Wenn Sie Vorlagen verwenden, müssen Sie die Struktur mit der Parent-Eigenschaft nach oben gehen, bis sie null ist. Verwenden Sie dann die TemplatedParent Eigenschaft. Sie können den logischen Baum mit einer Kombination aus beiden aufrufen. Allerdings bietet WPF Hilfsmethoden für genau dieses Szenario. Schauen Sie sich LogicalTreeHelper.GetParent an.
+0

Danke für die Antwort. Page getTopParent (FrameworkElement f) {FrameworkElement ct = f; while (wahr) { wenn (ct ist Seite) { break; } ct = (FrameworkElement) ct.Parent; } Rückgabe ct als Seite; } –

+0

Danke, nun, ich habe gerade überprüft und ich denke, es spielt keine Rolle, ob ich es in der gleichen Baugruppe oder einer anderen übergeben. Ja, mein Page-Element enthält Steuerungs- und Datenvorlagen? Gibt es eine Möglichkeit, die Elternseite zu bekommen, selbst wenn ich Vorlagen in meiner Seite habe. –

Verwandte Themen