2009-07-22 11 views
3

Wie kann ich ein benutzerdefiniertes Steuerelement erstellen, das eine Liste von UIElement s verwendet und diese nach einer bestimmten Logik rendert?Hinzufügen von UIElements zu benutzerdefiniertem Steuerelement (WPF)

Da es eine Liste von UIElement s behandelt, ist der beste Weg zum Hinzufügen von Steuerelementen der gleiche wie für, d. H. ListBox oder ComboBox.

<local:SomeControl> 
    <Button Content="First"/> 
    <Label Content="Something other"/> 
</local:SomeControl> 

Hier ist die XAML Benutzersteuerung:

<UserControl x:Class="_2009_07_22_Wpf_Smooth_Scroller.SomeControl" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      MinHeight="100" MinWidth="100"> 
    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto" /> 
      <RowDefinition Height="*" /> 
     </Grid.RowDefinitions> 
     <Label Content="Some title"/> 

     <!-- The inner UIElement to add content to --> 
     <Canvas x:Name="innerPanel" Grid.Row="1"/> 

    </Grid> 
</UserControl> 

Wie kann ich zum Beispiel Platz i-ten Kontrolle Position X = 50 * i, Y = 40 * i?

Antwort

4

Was Sie schon beschrieben ist eine WPF Panel:

Verwenden Panel-Elemente zu positionieren und Kind-Objekte in Windows Presentation Foundation (WPF) Anwendungen anordnen.

Das heißt, Sie könnten Panel Unterklasse und ordnen Sie Ihre Kinder nach Ihrer benutzerdefinierten Logik.

+0

Erstaunlich einfach. Habe es einfach ausprobiert. Funktioniert. Vielen Dank! –

0

Wenn Sie ein Benutzersteuerelement zu einem Panel hinzufügen möchten, verwenden Sie einfach die Children Eigenschaft des Bedienfelds. Probe:

usercontrolObject = new MyUserControl(); 
panelobj.Children.Add(usercontrolObject); 

Das ist es!