2016-09-29 33 views
0
<DataTemplate> 
       <Image Name="ServerImageSetter" Source="{svg2Xaml:SvgImage ServerAdministrator2;component/Images/test1.svg}"/> 
       <DataTemplate.Triggers> 
        <DataTrigger Binding="{Binding ServerKindTrigger}" Value="0"> 
         <Setter TargetName="ServerImageSetter" Property="Source" Value="{svg2Xaml:SvgImage ServerAdministrator2;component/Images/test2.svg}"/> 
        </DataTrigger> 
        <DataTrigger Binding="{Binding ServerKindTrigger}" Value="1"> 
         <Setter TargetName="ServerImageSetter" Property="Source" Value="{svg2Xaml:SvgImage ServerAdministrator2;component/Images/test3.svg}"/> 
        </DataTrigger> 
        <DataTrigger Binding="{Binding ServerKindTrigger}" Value="2"> 
         <Setter TargetName="ServerImageSetter" Property="Source" Value="{svg2Xaml:SvgImage ServerAdministrator2;component/Images/test3.svg}"/> 
        </DataTrigger> 
</DataTemplate   

私のC#コードでは、私の値の種類を0-2に変更し、画像を変更する必要があります。しかし、変更は機能しません。DataTemplateは変更されません。

public int ServerKindTrigger 
    { 
     get { return _serverKindTrigger; } 
     set { _serverKindTrigger = value; 
      RaisePropertyChanged(); 
     } 
    } 

//Here I switch my serverkind and wanna change the image value 

switch (_serverKind) 
     { 
      case Servers.test: _serverKindTrigger = 0; 
+1

。それはプロパティを介して行います: 'ServerKindTrigger = 0;'。 – ASh

答えて

0

バッキングフィールド_serverKindTrigger代わりのプロパティServerKindTriggerを設定し、ひいてはPropertyChangedEventを発射いないだけでなく、あなたが直接、ImageコントロールのSourceプロパティを設定している:

<Image Source="{svg2Xaml:SvgImage ServerAdministrator2;component/Images/test1.svg}"/> 

この地域のいわゆる値は常にDataTriggersのSettersの値よりも優先されます。参考までにDependency Property Value Precedenceを参照してください。

これにあなたのXAMLを変更し

:あなたは変数 `_serverKindTrigger`に新しい値を割り当てた場合、あなたは通知を上げていない

<Image> 
    <Image.Style> 
     <Style TargetType="Image"> 
      <Setter Property="Source" Value="{svg2Xaml:SvgImage ServerAdministrator2;component/Images/test1.svg}"/> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding ServerKindTrigger}" Value="0"> 
        <Setter Property="Source" Value="{svg2Xaml:SvgImage ServerAdministrator2;component/Images/test2.svg}"/> 
       </DataTrigger> 
       <DataTrigger Binding="{Binding ServerKindTrigger}" Value="1"> 
        <Setter Property="Source" Value="{svg2Xaml:SvgImage ServerAdministrator2;component/Images/test3.svg}"/> 
       </DataTrigger> 
       <DataTrigger Binding="{Binding ServerKindTrigger}" Value="2"> 
        <Setter Property="Source" Value="{svg2Xaml:SvgImage ServerAdministrator2;component/Images/test3.svg}"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Image.Style> 
</Image> 
+0

ありがとう、それは解決策です! (: – Pinotek

0

ローカルのフィールドは変更していますが、プロパティが変更されていないため、バインディングの更新がトリガーされません。

スイッチ/ケースの割り当てを変更してServerKindTriggerプロパティを割り当てます。

switch (_serverKind) 
     { 
      case Servers.test: ServerKindTrigger = 0; 
+0

URのお返事ありがとうございますが、私の問題はまだ生きています。私のイメージがどこにあるべきかは、単に "sys"である。 – Pinotek

関連する問題