如何在c#中动态更改listview数据模板
问题描述:
我有一个自定义的项目模板,用于列表视图,其中值绑定在.xaml中。 我想在c#端动态改变其中一个图像。 我知道在c#我可以在ContainerContentChanging
更改,但我无法访问c#中的自定义模板图像,请指导我解决这个问题。如何在c#中动态更改listview数据模板
这里是我的列表视图
<ListView ItemsSource="{Binding testList}" IsItemClickEnabled="True" ContainerContentChanging="ListView_ContainerContentChanging">
<ListView.ItemTemplate>
<DataTemplate>
<Grid HorizontalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition Height="1*" />
<RowDefinition Height="2" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.80*"></ColumnDefinition>
<ColumnDefinition Width="0.20*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<StackPanel Margin="0,8,0,8" Grid.Row="0" Grid.Column="0" VerticalAlignment="Center">
<StackPanel Orientation="Horizontal">
<TextBlock FontSize="20" Margin="0,8,0,4" Text="{Binding textVal1}" />
<Image Name="imgStatus" Source="ms-appx:///Assets/Icons/ic_test.png" Height="36" />
</StackPanel>
<TextBlock FontSize="18" Margin="0,0,0,4" Text="{Binding textVal2}" />
<TextBlock FontSize="21" Margin="0,0,0,0" Text="{Binding textVal3}" TextWrapping="WrapWholeWords" MaxLines="2" />
</StackPanel>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
我认为让有一个单独的C#文件中的数据模板...但我不能到C#文件连接起来,网格内。
赞赏从数据模板访问图像的任何帮助。
答
如果您将模板定义为静态资源或其他可以在XAML中引用它们的地方,则可以使用具有适当绑定的自定义转换器来处理模板中的更改。
不过,我相信改变ListView.ItemTemplate会影响集合中的所有项目。为了更改单个项目的模板,您必须添加一个包装对象并修改该对象的内容(您可以以类似的方式进行)。
我理解你希望在C#中更改模板,但我相信XAML的声明式风格应该足够了。
你能举个样品吗? – Shiva