0

Ich plane horizontale Liste von Benutzersteuerungen zu implementieren, die ich an die Flip-Ansicht während der Laufzeit hinzugefügt werden soll, habe ich versucht, den folgenden Code:Binding Liste der Benutzersteuerelemente zu Flipview?

<FlipView Grid.Row="2" Name="SlideFlipView" 
       ItemsSource="{x:Bind SlideViews}" 
       SelectionChanged="SlideFlipView_SelectionChanged" 
       Background="AliceBlue"> 
     <FlipView.ItemTemplate> 
      <DataTemplate> 
       <Frame Name="MenuDetailFrame" SourcePageType="{Binding}"/> 
      </DataTemplate> 
     </FlipView.ItemTemplate> 
</FlipView> 

Klasse sieht wie folgt Code:

public sealed partial class MenuDetailPage : Page 
{ 
    private List<object> SlideViews; 

    public MenuDetailPage() 
    { 
     this.InitializeComponent(); 
     LoadInitials(); 
    } 

    private void LoadInitials() 
    { 
     SlideViews = new List<object> 
     { 
      typeof(TopImageBottomTextControl), 
      typeof(TopTextBottomImageControl) 
     }; 
    } 
} 

aber das Benutzersteuerelement erscheint nicht in der Spiegelung, wenn ich das Programm ausführen. Lassen Sie mich wissen, wenn ich etwas bin hier fehlt

Antwort

0

folgenden Code ohne Datatemplate für mich gearbeitet:

<FlipView Grid.Row="2" 
      Name="SlideFlipView" 
      ItemsSource="{x:Bind SlideViews}" 
      SelectionChanged="SlideFlipView_SelectionChanged" 
      Background="AliceBlue"> 
</FlipView> 

Initialisierung von slideviews in der Klasse Objekt sieht aus wie

private void LoadInitials() 
{ 
    SlideViews = new List<object> 
    { 
    new UserControl1(), 
    new UserControl2() 
    }; 
} 
1

Nach dem "Frame Class":

SourcePageType kann in XAML festgelegt werden, unter Verwendung von String-to-Typ-Konvertierung, die XAML-Namespace-Zuordnungen interpretiert hat verwenden, aber das ist selten getan. Es ist eine bessere Vorgehensweise, Code auf App-Ebene zu haben, der die Aktivierung nachverfolgt und angibt, ob eine gesperrte App fortgesetzt wird, und Frame.Navigate verwendet, um die aktuelle Seite festzulegen.

Für Ihre Anforderung könnten Sie das Benutzersteuerelement an die Content von Frame binden.

private void LoadInitials() 
{ 
    SlideViews = new List<object> 
{ 
    new TopImageBottomTextControl(), 
    new TopImageBottomTextControl() 
}; 
} 

Nutzungs

<FlipView Name="SlideFlipView" 
      ItemsSource="{x:Bind SlideViews}" 
      SelectionChanged="SlideFlipView_SelectionChanged" 
      Background="AliceBlue"> 
    <FlipView.ItemTemplate> 
     <DataTemplate> 
      <Frame Name="MenuDetailFram" Content="{Binding}" /> 
     </DataTemplate> 
    </FlipView.ItemTemplate> 
</FlipView> 
+1

Warum muss DataTemplate überhaupt verwendet werden? Listen können UI-Steuerelemente ohne Verwendung von DataTemplate rendern. – ad1Dima

+1

'DataTemplate' beschreibt die visuelle Struktur eines Datenobjekts. Verwenden Sie die Datenbindung für bestimmte Elemente in der Vorlage, die die Datenwerte anzeigen. Weitere Informationen finden Sie unter [this] (https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.datatemplate). –

+0

Flipview ohne Datatemplate funktioniert für mich. habe die Antwort gepostet. – coder123

Verwandte Themen