簡體   English   中英

將樣式從按鈕的依賴屬性應用到控件

[英]Apply a style to a control from a button's dependency property

我創建了一個自定義控件,作為我正在制作的其他一些控件的基礎。 然后我為每一個定義了控制模板,所以現在我可以執行以下操作:

<!-- First layout -->
<custom:MyCustomControl Style="{StaticResource CustomStyle1}" />
<!-- Second layout -->
<custom:MyCustomControl Style="{StaticResource CustomStyle2}" />
...
etc.

然后我想制作它,這樣我只需按一下按鈕就可以從一種風格切換到另一種風格。 我最初的想法是創建帶有StyleToApply依賴屬性的自定義Button以及一種查找其包含父項的方法。 然后我將設置按鈕的OnClick方法以將其包含控件的樣式更改為按鈕的依賴屬性的樣式。 但是,我的風格沒有得到認可:

<!-- Within a custom control or user control -->
<local:StyleButton StyleToApply="{StaticResource ResourceKey}" ... />
                                                      ^ no suggested styles

甚至有可能實現這一目標嗎? 如果是這樣,如何? 如果沒有,我可以做什么?

一種可能的解決方案是在 XAML 中同時擁有兩個控件,並將它們的Visibility綁定到視圖模型中的一個屬性,即將 Control1 的 Visibility 綁定到視圖模型中的public bool StandardLayout ,而 Control2 的 Visibility 則與之相反。

這個答案的想法和我的改進:

<Window.Resources>
    <BooleanToVisibilityConverter x:Key="BooleanToVisibility" />
</Window.Resources>

<!-- First layout -->
<custom:MyCustomControl Style="{StaticResource CustomStyle1}" Visibility="{Binding StandardLayout, Converter={StaticResource BooleanToVisibility}}" />
<!-- Second layout -->
<custom:MyCustomControl Style="{StaticResource CustomStyle2}" Visibility="{Binding StandardLayout, Converter={StaticResource BooleanToVisibility}, ConverterParameter=Inverted}"/>

免責聲明:我自己還沒有嘗試過 ConverterParameter=Inverted 部分,您可能需要制作另一個反轉第一個的 viewmodel 屬性,或者像這里的 InverseBooleanToVisibilityConverter 。

編輯:然后按鈕,當點擊時,只會翻轉布爾值,控件切換可見性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM