0

我有一个自定义的项目模板,用于列表视图,其中值绑定在.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#文件连接起来,网格内。

赞赏从数据模板访问图像的任何帮助。

回答

0

如果您将模板定义为静态资源或其他可以在XAML中引用它们的地方,则可以使用具有适当绑定的自定义转换器来处理模板中的更改。

不过,我相信改变ListView.ItemTemplate会影响集合中的所有项目。为了更改单个项目的模板,您必须添加一个包装对象并修改该对象的内容(您可以以类似的方式进行)。

我理解你希望在C#中更改模板,但我相信XAML的声明式风格应该足够了。

+0

你能举个样品吗? – Shiva