簡體   English   中英

沒有Generic.xaml的WPF自定義視圖

[英]WPF custom View without Generic.xaml

我試圖實現特定於應用程序的自定義視圖,而沒有任何運氣。 這是我的問題:我需要一個自定義視圖,因為我希望用戶能夠在運行時動態切換視圖。 我需要一個自定義視圖(而不是僅數據模板),因為列表視圖布局以及控件模板和數據模板都必須更改。 所有的技巧都說實現從視圖庫派生的Custom類,並覆蓋DefaultStyleKey和ItemContainerDefaultStyleKey以返回在generic.xaml中定義的ComponentResourceKey。 但是,問題是我試圖創建幾個特定於該應用程序的視圖。 某些畫筆和字體將在整個應用程序中保持一致,並且自定義視圖將使用這些畫筆和字體。 即我有應用程序級別的Forebrush,Shadowbrush,Deepshadowbrush,TextDecorator等,我希望視圖使用這些。 如果視圖將在外部的generic.xaml中定義,則綁定到這些視圖將非常麻煩。 除此之外,無論如何它們都將使它們具有特定的應用程序(如果它們綁定到這些畫筆)。 任何人都有一個想法如何在應用程序內部定義視圖樣式,這些樣式將能夠在運行時更改?

我對您的詳細信息有些困惑,但是您可以在運行時設置ListView的樣式,例如...其中CustomStyle是要應用於ListView的預定義樣式。

ListView view = new ListView();
view.Style = CustomStyle;

DefaultStyleKey適用於自定義控件(這與UserControl不同)。 假設您想要一個稱為控件的新控件。 您將需要為該小部件定義DefaultStyleKey,因為它沒有定義默認樣式。 UserControl是控件的集合,因此它沒有這樣的預定義樣式。

另外,您可以創建ResourceDictionary來拆分樣式。 然后,您可以像這樣通過App.xaml合並它們...

    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="Themes/Generic.xaml"/>
                <ResourceDictionary Source="Themes/ListViewStyles.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>

暫無
暫無

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

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