Tengo un ControlTemplate personalizado para un WPF TabControl que agrega Botones a la izquierda y a la derecha del encabezado de TabItem. Por el momento, esta no es una parte específica, ya que los comandos de botón están vinculados en ControlTemplates XAML y no necesitan estar expuestos fuera de ControlTemplate.¿Cómo puedo agregar contenido adicional a un WPF TabControl?
Esto funciona bien para un botón, pero lo que si quiero añadir contenido hacia la izquierda (o derecha) lado de las TabItemHeaders que se pueden unir exterior de la ControlTemplate para que mi TabControl se vuelve más flexible?
Mi idea era subclasificar el TabControl y tener dos partes con nombre en el ControlTemplate y exponerlas como propiedades del nuevo control; CustomTabControl.LeftContentArea y CustomTabControl.RightContentArea respectivamente. Cada parte nombrada es un ContentPresenter y cada propiedad ContentPresenters Content está expuesta por las propiedades mencionadas anteriormente.
Sin embargo, cuando probé esto no pude poner contenido en las áreas de contenido izquierdo y derecho.
Editar: Para que quede claro, he incluido una imagen. Los rectángulos rojos muestran dónde quiero colocar contenido adicional.
Actualización: A continuación se muestra una captura de pantalla de los progresos que he hecho hasta ahora, espero que esto ayuda a explicar mi problema un poco más.
La captura de pantalla muestra mi Control de pestañas personalizado con dos pestañas en blanco y tres botones que se encuentran actualmente en el lado derecho del área del encabezado TabItem. Los botones están actualmente definidos en el TabControls personalizado ControlTemplate I.E. hay un ColumnDefinition dentro de ControlTemplates Grid que contiene un StackPanel que aloja 3 botones.
Lo que estoy buscando es una manera para que el consumidor de la tarjeta de registro decidir qué contenido va en la zona junto a las pestañas. P.EJ. el usuario debe ser capaz de hacer algo como esto:
<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>
Busco una forma de exponer la propiedad en un control personalizado, así que puedo enlazarlo así en XAML: LeftContentArea = "{StaticResource MyPanelWithLotsOfButtonsControl}". El contenido personalizado debe estar a la izquierda de los TabItems en lugar de a la izquierda del encabezado. Esto me ayuda con otro problema que estaba teniendo, así que votaré una vez que tenga suficiente representante. Gracias. –
Puede vincularse a esos recursos también en realidad. A la izquierda de TabItems, ¿te refieres al área de encabezado a la izquierda de todas las pestañas? –
Sí. En mi plantilla de control personalizado, he agregado una definición de columna adicional para que las pestañas se compensen y haya espacio para que se agregue mi contenido adicional. Quiero exponer una propiedad que me permita poner contenido en esta área. –