2017-08-17 7 views
-1

My DashBoardSimpleCountObjectの値はMyNameMyValueです。 私は、MyDataと呼ばれるObservableCollection<DashboardSimpleCountObject>を使用します。DynamicResourceを使用したDatatriggerはItemsControlの最後の項目でのみ動作します

MyValuenullの場合は、画像を表示したいです。 しかし、画像( "loading")は、ObservableCollectionの最後の項目に表示されます(何件あるのかは関係ありません)。 MyValueが設定されると(null以外)、自動的に更新され、正しく表示されます。これはすべての項目で問題なく動作します。

<ItemsControl x:Name="_control" ItemsSource="{Binding MyData}"> 
    <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
      <WrapPanel /> 
     </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <Grid Margin="25"> 
       <Label FontSize="14" Content="{Binding MyName}" /> 
       <Label Margin="0,25" HorizontalContentAlignment="Right" FontSize="29" FontWeight="ExtraBold" Foreground="{Binding MyColor}"> 
        <Label.Style> 
         <Style TargetType="{x:Type Label}"> 
          <Setter Property="Content" Value="{Binding MyValue}" /> 
           <Style.Triggers> 
           <DataTrigger Binding="{Binding MyValue}" Value="{x:Null}"> 
            <Setter Property="Content"> 
             <Setter.Value> 
              <Image Width="32" Height="32" Source="{DynamicResource loading}" /> 
             </Setter.Value> 
            </Setter> 
           </DataTrigger> 
          </Style.Triggers> 
         </Style> 
        </Label.Style> 
       </Label> 
      </Grid> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

私は間違っていますか? ありがとうございます! :)

+0

「DynamicResource」と関係があります。 'Content'を' DataTrigger'のイメージに設定するのではなく、デフォルトのテキストに設定すると、それはうまくいくように機能します。それは写真が1つのアイテムだけにロードされるようです。 – Grent

+0

私はGoogleにかなりの時間を費やして解決策を見つけましたが、「DynamicResource」に問題があるとは思わなかったので、明らかにわかっていませんでした。だから、「悪い」質問を申し訳なく思っています。次回はもっとうまくやろうとしています。 (でも、ここに質問を投稿するのはいつも私の最後の**わらです。) – Grent

答えて

0

DynamicResourceという性質がこの問題の原因です。 DynamicResourceStaticResourceに変更するだけで、このトリックが実行されました。

したがって、DataTriggerは最初からうまく機能しました。画像は単にDynamicResourceとしてロードされるため、一度しか表示されませんでした。

関連する問題