0

私のリストビューのカスタムメイドのアイテムテンプレートがあります。これは、値が.xaml自体にバインドされています。 イメージをC#側で動的に変更したいです。 私はContainerContentChangingで変更することができますが、私はC#でカスタムテンプレートの画像にアクセスできません。この問題を解決してください。ここでC#でlistview datatemplateを動的に変更するには

は私のリストビューが

<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

テンプレートを静的リソースまたはXAMLで参照できる場所として定義する場合は、適切なバインディングを持つカスタムコンバータを使用してテンプレートの変更を処理できます。

しかし、ListView.ItemTemplateを変更すると、コレクション内のすべてのアイテムに影響が出ると思います。個々のアイテムのテンプレートを変更するには、ラッパーオブジェクトを追加し、そのオブジェクトのコンテンツを変更する必要があります(同様の方法で行うことができます)。

C#でテンプレートを変更したいと思っていますが、XAMLの宣言スタイルで十分であると思います。

+0

サンプルをお願いしますか? – Shiva

関連する問題