Примерно так:
<StackPanel>
<TextBlock Text="{Binding ClassAProperty}"/>
<TextBlock Text="{Binding ClassBProperty}"/>
</StackPanel>
будет работать, если у классов нет свойств с одинаковыми именами.Но это своего рода уродливый хак, и удачи в обнаружении реальных ошибок привязки среди всех ложных ошибок привязки, которые сгенерирует этот подход.
Отображение свойств каждого типа в столбцы должно где-то жить, но ононе должен жить в XAML, и это не то, что я бы сказал.Я бы сделал это в моей модели зрения.Предполагая, что у меня еще нет классов модели представления для моих объектов ClassA и ClassB (и я не хочу их создавать), я бы реализовал что-то вроде этого:
public class DataGridHelper
{
public Wrapper(object o)
{
ClassA a = o as ClassA;
if (a != null)
{
Column1 = a.Property1;
Column2 = a.Property2;
...
}
ClassB b = o as ClassA;
if (b != null)
{
Column1 = b.Property1;
Column2 = b.Property2;
...
}
public object Column1 { get; private set; }
public object Column2 { get; private set; }
}
...а затем связать столбцы DataGrid
с коллекцией объектов DataGridHelper
.
Если бы у меня был класс ClassAViewModel
и ClassBViewModel
, я бы просто реализовал Column1
, Column2
и др. Свойства в обоих.Это был бы путь, если бы мне нужно было поддерживать двустороннее связывание и проверку.