如何在c#dynamic

时间:2017-08-17 20:45:35

标签: c# xaml listview xamarin.winphone win-phone-silverlight-8.1

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

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

1 个答案:

答案 0 :(得分:0)

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

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

我知道您希望在C#中更改模板,但我相信XAML的声明风格应该足够了。