1

我有一个为我的列表视图定制的项目模板,其中的值绑定在 .xaml 本身中。我想在 c# 端动态更改其中一个图像。我知道在 c# 中我可以更改,ContainerContentChanging但我无法访问 c# 中的自定义模板图像,请指导我解决这个问题。

这是我的列表视图

<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# 文件。

感谢您从数据模板访问图像的任何帮助。

4

1 回答 1

0

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

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

我了解您希望更改 C# 中的模板,但我相信 XAML 的声明式样式应该足够了。

于 2017-08-18T23:27:09.353 回答