Conditional Data Templates in WPF
-
05-07-2019 - |
Question
How would it be possible to choose a different datatemplate accroding the a field in the data binding source? I would have 2 different DataTemplates
<DataTemplate x:Key="DataTemplateLabel">
<Label Width="60" Height="25" Background="Red">
<TextBlock Text="{Binding Path=Name}"/>
</Label>
</DataTemplate>
<DataTemplate x:Key="DataTemplateTxtBox">
<TextBox Width="60" Height="25" Background="Red" Text="{Binding Path=Text}"/>
</DataTemplate>
if (isText) Then use DataTemplateTxtBox ELSE use DataTemplateLabel) Is this possible? Thanks.
Solution
You can create a DataTemplateSelector
and assign it to the ContentTemplateSelector
property (or ItemTemplateSelector
if it is in an ItemsControl
)
OTHER TIPS
This is more an indirect answer, but by doing polymorphism (i.e. abandoning IsText property and answering the question using a different type) you can define a DataTemplate for each different type.
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow