How do I create a datatemplate with content programmatically?
datatemplate, telerik, wpf
Solution
If for whatever reason you need to create a `DataTemplate` programmatically you would do:
XAML:
<Grid x:Name="myGrid">
<ContentControl ContentTemplate="{DynamicResource lightGreenRectangle}" />
</Grid>
Somewhere in your code:
public static DataTemplate CreateRectangleDataTemplate()
{
var rectangleFactory = new FrameworkElementFactory(typeof(Rectangle));
rectangleFactory.SetValue(Shape.FillProperty, new SolidColorBrush(System.Windows.Media.Colors.LightGreen));
return new DataTemplate
{
VisualTree = rectangleFactory,
};
}
public static void AddRectangleTemplateToResources(FrameworkElement element)
{
element.Resources.Add("lightGreenRectangle", CreateRectangleDataTemplate());
}
Then you just need to add the `DataTemplate` to a `ResourceDictionary` so it can be used. For example, in the code behind:
public MainWindow()
{
InitializeComponent();
AddRectangleTemplateToResources(myGrid);
}
Hope this helps!
Problem
I want to do the following at runtime in code: ``` <DataTemplate x:Key="lightGreenRectangle"> <Rectangle Fill="LightGreen"/> </DataTemplate> ``` So far I've got: ``` public DataTemplate GetColouredRectangleInDataTemplate(Color colour) { DataTemplate dataTemplate = new dataTemplate(); return dataTemplate; } ``` Help? I know this isn't the most elegant way of styling a control, but the component I want to specify a colour for has a property called "PointTemplate" of type DataTemplate.