Подсистема связывания WPF поддерживает любые типы объектов, структур, классов, универсальных классов и даже динамических объектов. Все, что имеет значение, - это то, что экземпляры имеют свойства .
Вы не можете создавать универсальные классы в ресурсах типичного приложения WPF, поскольку синтаксис создания объекта не поддерживает его. Тем не менее, объекты, созданные в выделенном коде, в вашей модели представления или сервисами (даже если они являются экземплярами универсальных типов или вложенных универсальных типов), все равно могут участвовать в связывании.
Вот пример, основанный на вопросе. Вот немного XAML для окна:
<Grid>
<ListBox ItemsSource="{Binding}" Padding="10">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding X}"/>
<TextBlock Text=" , "/>
<TextBlock Text="{Binding Y}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
и вот обобщенный класс, который похож на Point
класс:
class myClass<T>
{
public T X { get; set; }
public T Y { get; set; }
}
и ниже приведен код для поддержки связывания в XAML:
void Window_Loaded(object sender, RoutedEventArgs e)
{
DataContext = new List<myClass<int>>
{
new myClass<int> { X = 1, Y = 2 },
new myClass<int> { X = 3, Y = 4 },
};
}
и вот как это выглядит:
![Generic Binding](https://i.stack.imgur.com/fBkU2.png)
Мы создали экземпляры универсального класса в выделенном фрагменте кода, но привязаны к этим данным с использованием XAML.