[英]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.