亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

引用 ResourceDictionaries 和跨多個程序集的樣式問題

引用 ResourceDictionaries 和跨多個程序集的樣式問題

C#
斯蒂芬大帝 2022-06-12 15:05:30
我在跨多個程序集引用 ResourceDictionaries (RD) 時遇到問題。我目前遇到的具體問題是資源和樣式在設計時應用于 LoginWindow 而不是在運行時。我還想確定 RD/資源是否以與 DataContext 相同的方式工作。我有點不知所措,我認為我缺少一些關于 WPF 如何處理 RD 和資源等的基本知識對于上下文,我有兩個正在使用的程序集。ControlsAndResources(包含一般控件和資源/樣式)登錄(處理登錄 ui 和邏輯;這包含對 ControlsAndResources 的引用)ControlsAndResources 程序集包含 5 個簡單的 RD。這些都放在/Styles/DefaultBase.xaml(包含 FrameworkElement 和控件的基本樣式)Buttons.xaml(從基本控件樣式繼承)Textblocks.xaml(繼承自 Base FrameworkElement 樣式)Textboxes.xaml(從基本控件樣式繼承)Package.xaml(將“Buttons.xaml”、“Textblocks.xaml”和“Textboxes.xaml”打包到單個 RD 中,并包含另一個為“Button”、“Textblock”和“Textbox”類型創建隱式樣式的 RD )Login 程序集包含 LoginWindow.xaml。(這包含對“Package.xaml”的引用,其意圖是隱式樣式將應用于“LoginWindow”中包含的“Textblock”、“Textbox”和“Button”——它們只是在設計時才這樣做,而不是在運行時)我注釋掉了對“DefaultStyles.xaml”RD 的引用,它實際上只是封裝了相同的“Package.xaml”RD。出于某種原因,我認為解決方案是在同一個程序集中創建一個物理 RD,然后從不同的程序集中引用我想要的 RD。沒有。我對 WPF 相當精通和舒適,這個主題是個例外,因為我才開始將我的樣式提取到單獨的 RD。我推遲了它,因為與經理打交道似乎很頭疼。到目前為止,我似乎是對的。但是我決定開始這個是為了真正遵守 DRY 原則。話雖如此,根據目前的代碼,雖然微不足道,但如果有人有更好地遵守 DRY 原則的建議(或者真的有任何建議),那么我會全力以赴。謝謝。
查看完整描述

1 回答

?
海綿寶寶撒

TA貢獻1809條經驗 獲得超8個贊

中的隱式樣式Package.xaml應在合并ResourceDictionary本身中定義。嘗試這個:


<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

                    xmlns:local="clr-namespace:ControlsAndResources.Styles.Default">

    <ResourceDictionary.MergedDictionaries>

        <ResourceDictionary Source="/ControlsAndResources;component/Styles/Default/Base.xaml"/>

        <ResourceDictionary Source="/ControlsAndResources;component/Styles/Default/Buttons.xaml"/>

        <ResourceDictionary Source="/ControlsAndResources;component/Styles/Default/Textblocks.xaml"/>

        <ResourceDictionary Source="/ControlsAndResources;component/Styles/Default/Textboxes.xaml"/>

    </ResourceDictionary.MergedDictionaries>

    <Style TargetType="Button" BasedOn="{StaticResource DefaultButtons}"/>

    <Style TargetType="TextBlock" BasedOn="{StaticResource DefaultTextblocks}"/>

    <Style TargetType="TextBox" BasedOn="{StaticResource DefaultTextboxes}"/>

</ResourceDictionary>


查看完整回答
反對 回復 2022-06-12
  • 1 回答
  • 0 關注
  • 194 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號