我有3个列表视图。它们非常相似。唯一的区别是它们的ItemsSource绑定到不同的变量。有没有办法用未知的ItemsSource创建一个模板列表视图,并且我可以传递一个参数来填充那个ItemsSource?
我的代码如下:
<ListView Name="View1" ItemsSource={"Binding Student1"}>
<TextBlock Text={"Binding Name"}/>
</ListView>
<ListView Name="View2" ItemsSource={"Binding Student2"}>
<TextBlock Text={"Binding Name"}/>
</ListView>
<ListView Name="View3" ItemsSource={"Binding Student3"}>
<TextBlock Text={"Binding Name"}/>
</ListView>
我在想是否有一种方法可以创造出这样的东西:
<ListView Name="StudentTemplate" ItemsSource=Parameter1>
<TextBlock Text={"Binding Name"}/>
</ListView>
然后我可以这样使用它:
<Temaplate="StudentTemplate", Parameter="{Binding Student1}"/>
<Temaplate="StudentTemplate", Parameter="{Binding Student2}"/>
<Temaplate="StudentTemplate", Parameter="{Binding Student3}"/>
类似的东西。我知道我的语法没有意义。我是WPF的新手。我正在考虑用C++创建一个函数,它接受一个参数。希望它有意义。
2条答案
按热度按时间eivnm1vs1#
使用
ContentPresenter
:然后,您的模板将如下所示:
这样,您就有了一个绑定到Student1、Student2...的模板。
sdnqo3pr2#
您在考虑模板化方面的思路是正确的
您正在寻找的是一个称为ControlTemplate的东西。
然后,ControlTemplate将以ListView控件为目标,并使用关键字TemplateBinding从ListView传递ItemsSource绑定
您可能希望将其添加为窗口资源,如下所示。
这将使您能够在ListView控件上使用此模板,如下所示
希望这能给你你要找的东西