2011-03-14 46 views
4

如何在觸發器中設置屬性,如果爲空?如何在觸發器中設置屬性,如果爲空?

<Style.Triggers> 
    <Trigger Property="ContextMenu" Value="{x:Null}"> 
     <Setter Property="ContextMenu" Value="{DynamicResource ContextMenu}"/> 
    </Trigger> 
</Style.Triggers> 
+0

你是否試圖設置ContextMenu,只有當用戶沒有設置它時? – CodeNaked 2011-03-17 01:49:44

+0

是的,我試圖設置ContextMenu,只有當用戶沒有設置。 – 2011-03-17 12:37:41

回答

0

你可以簡單地直接設置文本菜單中你的風格像這樣:

<Style ...> 
    <Setter Property="ContextMenu" Value="{DynamicResource ContextMenu}"/> 
</Style> 

如果用戶設置的ContextMenu明確,那麼將優先於樣式的制定者。有關順序或優先順序,請參閱此MSDN article。你的風格設置者在#8以下,而用戶設置在#3。

0

你試過了嗎?

<Style.Triggers> 
    <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=Self}, Path=ContextMenu}" Value="{x:Null}"> 
     <Setter Property="ContextMenu" Value="{DynamicResource ContextMenu}"/> 
    </DataTrigger> 
</Style.Triggers> 

但在現實中,你應該設置在控件的樣式上下文菜單,然後控制的任何用戶都可以在派生的風格還是在控制屬性將其覆蓋。

+0

我試圖做到這一點。看到這個問題:[鏈接](http://stackoverflow.com/questions/5294094/how-to-override-contextmenu-in-global-style-wpf) – 2011-03-14 08:29:34

+0

對不起,能否詳細說明一下。在這個例子中,你鏈接到的問題是關於基礎風格的風格。這是爲你工作嗎?在這個問題中,我認爲它更像是一個風格觸發器的問題。我讚賞最後的投票,但我想知道解決方案是有用的。 – jjrdk 2011-03-14 09:31:46

+0

此解決方案生成StackOverflow異常。 – 2011-03-15 02:58:40

相關問題