Back to Devexpress

ThemedWindow.ToolbarItemTemplateSelector Property

wpf-devexpress-dot-xpf-dot-core-dot-themedwindow-60c19be9.md

latest5.2 KB
Original Source

ThemedWindow.ToolbarItemTemplateSelector Property

Gets or sets the object that chooses the current ThemedWindow‘s toolbar 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 ToolbarItemTemplateSelector { get; set; }
vb
Public Property ToolbarItemTemplateSelector As DataTemplateSelector

Property Value

TypeDescription
DataTemplateSelector

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

|

Remarks

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

Note

The ToolbarItemTemplate property applies to all objects except UIElements objects.

The following code sample shows how to add ThemedWindow Toolbar Items and use the ToolbarItemTemplateSelector 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.ToolbarItemTemplateSelector>
    <local:SampleTemplateSelector/>
  </dx:ThemedWindow.ToolbarItemTemplateSelector>

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

</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 ToolbarItemTemplate property applies to all objects except the Button control.

The image below illustrates the result:

See Also

ToolbarItems

ToolbarItemsSource

ToolbarItemTemplate

ThemedWindow Class

ThemedWindow Members

DevExpress.Xpf.Core Namespace