簡體   English   中英

為什么使用靜態資源會破壞Visual Studio中的設計器?

[英]Why does using static resources break the designer in Visual studio?

我在類庫中有一個資源字典,它有一堆SolidColorBrush和Control樣式。 當我確保我設置的樣式的所有控件都使用DynamicResource時,它在設計器中工作,但如果我將其切換為使用StaticResource,則設計器中斷或我的應用程序無法運行......或兩者兼而有之。

這有效

<Image Source="{Binding Image}" Style="{DynamicResource DriveImageStyle}"/>

這打破了

<Image Source="{Binding Image}" Style="{StaticResource DriveImageStyle}"/>

給我錯誤,如:

XamlParseException:在'System.Windows.Markup.StaticResourceHolder'上提供值引發異常。

找不到名為'DriveImageStyle'的資源

在資源字典中使用資源時(設置樣式的背景顏色)

這有效

<Setter Property="Background" Value="{DynamicResource ButtonBackgroundColour}" />

這打破了

<Setter Property="Background" Value="{StaticResource ButtonBackgroundColour}" />

並給我設計師的錯誤,如:

拋出異常:PresentationFramework.dll中的'System.Windows.Markup.XamlParseException'

附加信息:'{DependencyProperty.UnsetValue}'不是屬性'Background'的有效值。

任何人都可以給我一個理由,為什么它以這種方式行事?

附加信息

在我的視圖中,我像這樣引用字典:

<UserControl.Resources>
        <ResourceDictionary Source="pack://application:,,,/Styles;component/Resources.xaml" />
    </UserControl.Resources>

我將它們合並到我的類庫中,如下所示:

   <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="Colours.xaml"/>
        <ResourceDictionary Source="Buttons.xaml"/>
        <ResourceDictionary Source="Controls.xaml"/>
    </ResourceDictionary.MergedDictionaries>

我希望我有時間去測試,但我想說這是我上次直接從usercontrol使用時的方式。 然而,我通常建議不要反對它,只是在項目的app.xaml或更集中的地方拍打它,除非一個視圖真的是唯一需要它的視圖。 無論哪種方式都給了這個鏡頭,他們可以對細節有所了解。

<UserControl.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://application:,,,/Styles;component/Resources.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</UserControl.Resources>

暫無
暫無

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

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