Ho un ControlTemplate personalizzato per un controllo TabControllo WPF che aggiunge pulsanti ai lati sinistro e destro dell'intestazione TabItem. Al momento questa non è una parte denominata poiché i comandi dei pulsanti sono associati a XAML di ControlTemplates e non è necessario che vengano esposti all'esterno di ControlTemplate.Come posso aggiungere contenuti extra a un WPF TabControl?
Questo funziona bene per un pulsante, ma cosa succede se voglio aggiungere contenuti verso sinistra (o destra) sul lato delle TabItemHeaders, che possono essere collegati al di fuori del ControlTemplate modo che la mia TabControl diventa più flessibile?
La mia idea era quella di sottoclasse TabControl e di avere due parti con nome nel ControlTemplate e di esporle come proprietà del nuovo controllo; CustomTabControl.LeftContentArea e CustomTabControl.RightContentArea rispettivamente. Ogni parte denominata è ContentPresenter e ogni proprietà ContentPresenters Content è esposta dalle proprietà sopra indicate.
Tuttavia, quando ho provato questo non ero in grado di mettere il contenuto nelle aree di contenuto sinistra e destra.
Modifica: Per essere chiari ho incluso un'immagine. I rettangoli rossi mostrano dove voglio essere in grado di inserire contenuti extra.
Aggiornamento: Qui di seguito è una schermata dei progressi che ho fatto finora, spero che questo aiuta a spiegare il mio problema un po 'più.
La schermata mostra il mio controllo scheda personalizzato con due schede vuote e tre pulsanti attualmente sul lato destro dell'area di intestazione TabItem. I pulsanti sono attualmente definiti nel TabControls personalizzato ControlTemplate I.E. c'è una ColumnDefinition all'interno della ControlTemplates Grid che contiene uno StackPanel che ospita 3 pulsanti.
Quello che sto cercando è un modo per consentire al consumatore di controllo a schede a decidere quali contenuti va nella zona accanto alle schede. PER ESEMPIO. l'utente dovrebbe essere in grado di fare qualcosa del genere:
<local:CustomTabControl>
<local:CustomTabControl.RightContentArea>
<!-- This can be changed to ANY content that the user wants -->
<StackPanel Orientation="Horizontal">
<Button Content="Test" />
<Button Content="Test" />
<Button Content="Test" />
</StackPanel>
</local:CustomTabControl.RightContentArea>
<!-- TabItems are added as normal -->
<TabItem Header="Tab One" />
<TabItem Header="Tab Two" />
</local:CustomTabControl>
Sto cercando un modo di esporre la proprietà in un controllo personalizzato in modo da poterlo associare in questo modo in XAML: LeftContentArea = "{StaticResource MyPanelWithLotsOfButtonsControl}". Il contenuto personalizzato deve essere a sinistra di TabItems anziché a sinistra dell'intestazione. Questo mi aiuta con un altro problema che stavo avendo, quindi risparmierò una volta che avrò abbastanza rappresentanti. Grazie. –
Anche in questo caso è possibile associare a tali risorse. A sinistra dei TabItems, intendi nell'area Header a sinistra di tutte le schede? –
Sì. Nel mio modello di controllo personalizzato ho aggiunto un'ulteriore ColumnDefinition in modo che le schede siano sfalsate e vi sia uno spazio per il mio contenuto extra da aggiungere. Voglio esporre una proprietà che mi permetta di inserire contenuti in quest'area. –