4imble
4imble

Reputation: 14416

How to reuse Xaml code templates?

Say i have this XAML :

  <StackPanel>
    <TextBlock Text="{Binding Path=TaskName}" />
    <TextBlock Text="{Binding Path=Description}"/>
    <TextBlock Text="{Binding Path=Priority}"/>
  </StackPanel>

I'd like re use it across multiple places. For example as a DataTemplate for a ItemsControl but also as The basis for something like a buttons content.

How would i go about doing this? I'm thinking something like an ASP.NET Partial view.

I don't want to use a usercontrol as i don't require any code behind.

Upvotes: 1

Views: 1240

Answers (2)

4imble
4imble

Reputation: 14416

I managed to get it to work in a way using a style:

<Style x:Key="myStyle" TargetType="Control">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate>
                <StackPanel>
                   <TextBlock Text="{Binding Path=TaskName}" />
                   <TextBlock Text="{Binding Path=Description}"/>
                   <TextBlock Text="{Binding Path=Priority}"/>
                </StackPanel>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

It insisted on me using a TargetType otherwise it complained about setting the template. I can now use this on any control.

If i want to then use this essentially as a datatemplate, i can just set the style of the placeholder item within the datatemplate (probably a ContentControl) to use this.

Upvotes: 2

Syler
Syler

Reputation: 1171

Create a StylesResourceDictionary.xaml and create a staticresource in your App.Xaml. At runtime, the styles will get binded and then you can reference anything from the dictionary anywhere in your app, across usercontrols or datatemplates etc.

Upvotes: 1

Related Questions