Możesz skorzystać z TemplateSelector
.
public class UserTemplateSelector: DataTemplateSelector
{
public DataTemplate EmployeeTemplate{ get; set; }
public DataTemplate CustomerTemplate{ get; set; }
public override DataTemplate SelectTemplate(object obj, DependencyObject container)
{
//... logika wyboru, walidacja, i np. zwracamy template dla klienta.
return CustomerTemplate;
}
}
Następnie w widoku, który wyświetla użytkowników:
<UserControl.Resources>
<!--Customer-->
<DataTemplate x:Key="customertemp">
<TextBox Text="Customer"></TextBox>
</DataTemplate>
<!--Employee-->
<DataTemplate x:Key="employeetemp">
<TextBox Text="Employee"></TextBox>
</DataTemplate>
<!--TMP selector-->
<tmpselectorsnamespace:UserTemplateSelector x:Key="UserSelector"
CustomerTemplate="{StaticResource customertemp}"
EmployeeTemplate="{StaticResource employeetemp}"/>
</UserControl.Resources>
<Grid>
<ListBox ItemsSource="{Binding Users}" ItemTemplateSelector="{StaticResource UserSelector}"/>
</Grid>