0
我创建了下面的ListView显示一些数据(除去多余的标记):定义列表视图中的资源文件,其中仅有的ItemSource变化
<ListView ItemsSource="{Binding NewYorkResidents}">
<ListView.Header>
<Style>
<Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
</Style>
</ListView.Header>
<ListView.HeaderTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="60"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="Name" Grid.Column="0" />
<TextBlock Text="Address" Grid.Column="1" />
</Grid>
</DataTemplate>
</ListView.HeaderTemplate>
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="60"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Name}" Grid.Column="0" />
<TextBlock Text="{Binding Address}" Grid.Column="1" />
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
现在我想重新使用此相同的ListView +标记在不同的视图,只是使用不同的ItemsSource(尽管它会绑定到相同的数据类型)。
重用ListView并只指定ItemsSource的最佳方式是什么?我希望能够做这样的事情:
<ListView DataTemplate="MyTemplate" ItemsSource=<some new binding> />
而且还有它显示了使用从数据的ItemsSource ListView的标题和名称和地址的TextBlocks。
制作ControlTemplate看起来并不是正确的,因为我在列表视图中也指定了实际数据(例如绑定到名称和地址)。
有没有更好的方法来创建某种类型的资源,所以我可以重用这个?
您可以使用控件模板对于这种情况,结合你可以使用TemplateBinding或的RelativeSource。 https://stackoverflow.com/q/1131222/2745294 –