2012-07-31 111 views
0

我有用戶控件中定義的自定義內容(紅色圓圈)的按鈕,並且我希望圓形在禁用按鈕時變爲灰色。WPF中的觸發器中無法使用按鈕屬性

我嘗試了以下,它不編譯(錯誤:'IsEnabled'成員無效,因爲它沒有合格的類型名稱)。任何解釋我在這裏做錯了嗎?

<Button> 
     <Button.Content> 
      <Grid> 
       <Ellipse x:Name="circle" Width="20" Height="20" Fill="Red"/> 
      </Grid> 
     </Button.Content> 
     <Button.Triggers> 
      <Trigger Property="IsEnabled" Value="False"> 
      <Setter TargetName="circle" Property="Fill" Value="Gray"/> 
       </Trigger> 
      </Button.Triggers> 
    </Button> 

回答

0

這裏有一個辦法做到這一點:

<Button Name="btn" > 
    <Ellipse Height="20" Width="20"> 
     <Ellipse.Style> 
      <Style TargetType="Ellipse"> 
       <Setter Property="Fill" Value="Red" /> 
       <!-- Here is the 'normal' content --> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding IsEnabled, ElementName=btn}" Value="False"> 
        <Setter Property="Fill" Value="Blue" /> 
        <!-- Here is the 'override' content --> 
        </DataTrigger> 
       </Style.Triggers> 
      </Style> 
     </Ellipse.Style> 
    </Ellipse> 
</Button> 

DataTriggers只有在款式工夫,所以我們需要來定位被接受的樣式的實際元素,但綁定到控制另一個元素。

+0

我選擇了你的答案,因爲它關閉了我所做的。我使用所需的內容定義了不同的樣式,並在Button中添加了觸發器,以便在IsEnabled屬性爲False時更改樣式。 – Metro 2012-08-01 14:25:52

1

IsEnabled是關於一類中定義的DependecyProperty從Button繼承; XAML要求您明確指定擁有類型。改爲嘗試Trigger Property="UIElement.IsEnabled"