我的listview有一个自定义的项目模板,其中的值被绑定在.xaml本身。
我想在c#侧动态更改其中一个图像。
我知道在c#中我可以在ContainerContentChanging
中更改,但我无法访问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 :(得分:0)
如果将模板定义为静态资源,或者在XAML中可以引用它们的其他位置,则可以使用具有适当绑定的自定义转换器来处理模板中的更改。
但是,我相信更改ListView.ItemTemplate会影响集合中的所有项目。为了更改单个项目的模板,您必须添加包装器对象并修改该对象的内容(您可以以类似的方式执行此操作)。
我知道您希望在C#中更改模板,但我相信XAML的声明风格应该足够了。