2012-06-08 99 views
1

我有這勢必會過濾數據視圖按鈕(始終爲1個記錄):爲什麼沒有這個簡單的WPF綁定工作?

<Button x:Name="btnValidate" Grid.Row="0" Grid.RowSpan="2" Grid.Column="3" Cursor="Hand" Click="btnValidate_Click"> 
    <Button.Style> 
     <Style TargetType="{x:Type Button}"> 
      <Setter Property="Background" Value="{StaticResource ValidationNoneBrush}" /> 
      <Setter Property="Tag" Value="{Binding VALIDATED, Converter={StaticResource DebugConverter}}" /> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate> 
         <Border x:Name="bdrValidate" Background="{TemplateBinding Background}"> 
          <Image Source="../Images/24/LocationSearch.png" Stretch="None" /> 
         </Border> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
      <Style.Triggers> 
       <Trigger Property="Tag" Value="1"> 
        <Setter Property="Background" Value="Blue"/> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </Button.Style> 
</Button> 

正如你所看到的,我有一個轉換器進行調試設置,並且它的正常工作。我看到通過轉換器的值是0和1。那麼爲什麼背景不會基於Style Trigger而改變?我不知道...

+0

圖像是否有透明背景? – 2012-06-08 15:03:23

回答

1

推測你的轉換器正在返回整數0或整數1?該Tag屬性爲Object型的,所以XAML編譯器假定你的觸發值「1」是string,不是int

要麼改變你的轉換器返回一個string,或指定在觸發一個int值:

<Trigger xmlns:sys="clr-namespace:System;assembly=mscorlib" Property="Tag"> 
    <Trigger.Value> 
     <sys:Int32>1</sys:Int32> 
    </Trigger.Value> 
</Trigger> 
0

我認爲你的問題是,因爲標籤的對象類型,1值被認爲是一個字符串,以防萬一你的屬性VALIDATED是一個int。

由於msdn的狀態,Trigger.Value做了reference equality檢查。 和Object.ReferenceEquals("1", 1)是錯誤的。

如果您將VALIDATED屬性修改爲字符串,它應該可以正常工作。

相關問題