Back to Devexpress

ThemedWindow.HeaderItemTemplateSelector Property

wpf-devexpress-dot-xpf-dot-core-dot-themedwindow-02de5e63.md

latest5.3 KB
Original Source

ThemedWindow.HeaderItemTemplateSelector Property

Gets or sets the object that chooses the current ThemedWindow‘s header item template based on custom logic. This is a dependency property.

Namespace : DevExpress.Xpf.Core

Assembly : DevExpress.Xpf.Core.v25.2.dll

NuGet Package : DevExpress.Wpf.Core

Declaration

csharp
public DataTemplateSelector HeaderItemTemplateSelector { get; set; }
vb
Public Property HeaderItemTemplateSelector As DataTemplateSelector

Property Value

TypeDescription
DataTemplateSelector

A DataTemplateSelector object that chooses the current ThemedWindow‘s header item template based on custom logic.

|

Remarks

A selector assigned to the HeaderItemTemplateSelector property chooses a template and applies it to header items (see the ThemedWindow.HeaderItems property) of this ThemedWindow. To explicitly select a required template, assign it to the ThemedWindow.HeaderItemTemplate property. Refer to the Choosing Templates Based on Custom Logic topic for more information.

Note

The HeaderItemTemplate property applies to all objects except UIElements objects.

The following code sample shows how to add ThemedWindow Header Items and use the HeaderItemTemplateSelector property:

xaml
<dx:ThemedWindow
    ...
      xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core">
  <dx:ThemedWindow.Resources>
      <DataTemplate x:Key="BlueBorderTemplate" >
          <Border Margin="1" Background="Blue">
              <TextBlock Margin="5" Foreground="Yellow" Text="{Binding}" />
          </Border>
      </DataTemplate>
      <DataTemplate x:Key="OrangeBorderTemplate">
          <Border Margin="1" Background="Orange">
              <TextBlock Margin="5" Foreground="Green" Text="{Binding}" />
          </Border>
      </DataTemplate>
  </dx:ThemedWindow.Resources>

  <dx:ThemedWindow.HeaderItemTemplateSelector>
      <local:SampleTemplateSelector/>
  </dx:ThemedWindow.HeaderItemTemplateSelector>

  <dx:ThemedWindow.HeaderItemsSource>
      <dx:ThemedWindowHeaderItemsCollection>
          code_1
          code_2
          code_3
          <Button Content="SimpleButton"/>
      </dx:ThemedWindowHeaderItemsCollection>
  </dx:ThemedWindow.HeaderItemsSource>

</dx:ThemedWindow>
csharp
public class SampleTemplateSelector : DataTemplateSelector {
      public DataTemplate BlueBorderTemplate { get; set; }
      public DataTemplate OrangeBorderTemplate { get; set; }
      public override DataTemplate SelectTemplate(object item, DependencyObject container) {
          if(item.ToString() == "code_1") {                
              return (container as FrameworkElement).TryFindResource("BlueBorderTemplate") as DataTemplate;
          }
          if(item.ToString() == "code_2") {                
              return (container as FrameworkElement).TryFindResource("OrangeBorderTemplate") as DataTemplate;
          }
          return base.SelectTemplate(item, container);
      }
  }
vb
Public Class SampleTemplateSelector
  Inherits DataTemplateSelector

  Public Property BlueBorderTemplate As DataTemplate
  Public Property OrangeBorderTemplate As DataTemplate

  Public Overrides Function SelectTemplate(ByVal item As Object, ByVal container As DependencyObject) As DataTemplate
      If item.ToString() = "code_1" Then
          Return TryCast((TryCast(container, FrameworkElement)).TryFindResource("BlueBorderTemplate"), DataTemplate)
      End If

      If item.ToString() = "code_2" Then
          Return TryCast((TryCast(container, FrameworkElement)).TryFindResource("OrangeBorderTemplate"), DataTemplate)
      End If

      Return MyBase.SelectTemplate(item, container)
  End Function
End Class

Note

In this code snippet, the HeaderItemTemplate property applies to all objects except the Button control.

The image below illustrates the result:

See Also

HeaderItems

HeaderItemsSource

HeaderItemTemplate

ThemedWindow Class

ThemedWindow Members

DevExpress.Xpf.Core Namespace