Как динамически изменить шаблонную табличку в C#

У меня есть пользовательский шаблон элемента для моего списка, значения которого связываются в самом.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# внутри сетки.

Любая помощь для доступа к изображению из шаблона данных приветствуется.

1 ответ

Если вы определяете шаблоны как статический ресурс или где-то еще, где на них можно ссылаться в XAML, вы можете использовать собственный преобразователь с соответствующими привязками для обработки изменений в шаблоне.

Тем не менее, я считаю, что изменение ListView.ItemTemplate повлияет на все элементы в коллекции. Чтобы изменить шаблон отдельных элементов, вам нужно будет добавить объект-оболочку и изменить содержимое этого объекта (что вы можете сделать аналогичным образом).

Я понимаю, что вы хотели изменить шаблон в C#, но я считаю, что декларативный стиль XAML должен быть достаточным.

Другие вопросы по тегам