Как я могу сказать Listbox
распознать новый стиль для нового класса?
Путем добавления неявного DataTemplate
для нового класса, как вы это делали дляMyClass
:
<ListBox x:Name="lb">
<ListBox.Resources>
<DataTemplate DataType="{x:Type local:MyClass}">
<TextBlock>My Class...</TextBlock>
</DataTemplate>
<DataTemplate DataType="{x:Type local:MyClass2}">
<TextBlock>My Class 2...</TextBlock>
</DataTemplate>
</ListBox.Resources>
</ListBox>
public interface MyInterface { }
public class MyClass : MyInterface { }
public class MyClass2 : MyInterface { }
public class MyClass3 : MyInterface { }
...
lb.ItemsSource = new List<MyInterface> { new MyClass(), new MyClass(), new MyClass2(), new MyClass3() };
... или другие неизвестные классы, реализующие только интерфейс?
Использование неявного DataTemplate
длятип интерфейса, подобный этому, не поддерживается:
<DataTemplate DataType="{x:Type local:MyInterface}">
<TextBlock>won't be applied to MyClass3 objects...</TextBlock>
</DataTemplate>
Пожалуйста, обратитесь к моему ответу здесь для получения дополнительной информации о причинах.
Это означает, чточто вам придется определить другой шаблон для MyClass3
.