WPF 控制項像 HTML 的 class 屬性一樣同時應用多個樣式,<Button Style="{wms:MultiStyle btn btn-default btn-lg}" Content="Large button" /> ...
最近在做WPF項目,公司沒有專門的UI工程師,什麼都要自己做。接觸WPF已經有好幾年了,自定義樣式什麼的也可以做一些。WPF在使用樣式的時候一般都是 Style="{StaticResource styleKey}"
。能不能使控制項同時應用多個 Style,類似於 HTML 中 class="class1 class2 class3"
呢?
WpfMultiStyle
Google 一番,很多人都是通過 BaseOn的方式來實現,雖然能達到要求,但是不夠靈活,也不是我想要的。
最終在 stackoverflow 有所收貨。他是通過 MarkupExtension 擴展實現的。
整理之後發佈在 Nuget,可以直接通過Nuget引用,也可以直接把源碼拷貝到項目中直接使用。
源碼在 https://github.com/PxAndy/WpfMultiStyle。
使用
參照 Bootstrap 的按鈕寫了幾個樣式。具體的樣式代碼就不貼了,感興趣的可以直接去 WpfMultiStyle.Test/MainWindow.xaml 看看。
引入命名空間
xmlns:wms="clr-namespace:WpfMultiStyle;assembly=WpfMultiStyle"
應用樣式
以 Button
為例:
<Button Style="{wms:MultiStyle btn btn-default btn-lg}" Content="Large button" />
運行
看起來就是下麵的樣子:
參考
How to apply multiple styles in WPF