Как динамически изменить шаблонную табличку в 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 должен быть достаточным.