3
每次我想我終於得到WPF/XAML
直觀的東西像這樣拿出(咆哮以上)...樣式觸發器產生任何影響
我想實現一個「可憐的人」切換菜單項按鈕。從本質上講,當它被檢查時,應該說「公制」,什麼時候不檢查 - 「帝國」。我認爲它應該相當簡單,XAML
,但我不能得到它的工作。
這裏是我的嘗試:
<MenuItem IsCheckable="True" IsChecked="True">
<Style>
<Style.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Header" Value="Metric"/>
</Trigger>
<Trigger Property="IsChecked" Value="False">
<Setter Property="Header" Value="Imperial"/>
</Trigger>
</Style.Triggers>
</Style>
</MenuItem>
它給了我一個錯誤「成員‘器isChecked’無法識別或不accssible」(同爲頭)。
錯誤消失,當我做<Style TargetType="{x:Type MenuItem}">
,但它什麼也沒做。
我直接嘗試沒有<Style>
<MenuItem.Triggers>
<Trigger...>
</MenuItem.Triggers>
首先,它給了我同樣的錯誤如上,但是當我改變了屬性Property="MenuItem.IsChecked"
就開始尖叫,只有EventTriggers是允許的。
我也試圖與一個DataTrigger
(當然,我還是不完全瞭解觸發器之間的差異):
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type MenuItem}}, Path=IsChecked}" Value="True">
<Setter Property="Header" Value="Metric"/>
</DataTrigger>
無影響。
幫助......請......
神聖的廢話...我想我試過每一種組合。它的工作 - 謝謝。 @Clemens,你能解釋爲什麼沒有''這是不正確的? –
因爲那麼你不會指定'Style'屬性,而只是將一些東西添加到不是另一個MenuItem的'Items'集合,因此被忽略。 – Clemens
@NewDev在這種情況下[MenuItem.IsChecked](http://msdn.microsoft.com/en-us/library/system.windows.controls.menuitem.ischecked.aspx)當只有2個可能的值時,寧可有兩個獨立的'觸發器',只需選擇一個Value作爲'Style'的默認設置器,並且只有一個觸發器來切換該值。 – Viv