gpt4 book ai didi

wpf - 在我的类库项目中使用资源字典样式而不合并字典

转载 作者:行者123 更新时间:2023-12-03 18:03:38 27 4
gpt4 key购买 nike

我正在创建一个包含 WPF 用户控件的类库项目。 我的要求是所有控件都具有相同的样式 .我的项目看起来像:

enter image description here

为了解决这个问题,我所做的事情:

  • 添加了 WPF 应用程序 System.Xaml、WindowsBase 等所需的所有引用。这样我就可以在我的类库项目中拥有 wpf 控件。
  • 在 AssemblyInfo.cs 中,我添加了:
    [assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)]
  • 将 ResourceDictionary1.xaml 添加到添加样式的项目中。
    <ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <SolidColorBrush x:Key="Brush1" Color="#FF19199E"/>

    </ResourceDictionary>
  • 现在,如果我想在 UserControl1.xaml 上使用样式,我会这样做:
    <UserControl.Resources>
    <ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="ResourceDictionary1.xaml" />
    </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>

    </UserControl.Resources>

    <Grid >
    <Rectangle Fill="{StaticResource Brush1}" />
    </Grid>


  • 我知道它很好用,但这里有一个问题。 每次我创建一个新的 userControl 时,我都必须合并字典。在常规 WPF 应用程序中,我只需在 App.xaml 上合并字典一次,就可以在整个应用程序中使用该字典。 如何避免每次创建新用户控件时都必须合并字典? 如果我打算添加一个新的资源字典,我将不得不转到所有 userControls 并合并另一个字典。 也许我写错了问题标题,我的问题应该是如何将 App.xaml 文件添加到类库项目

    最佳答案

    您应该替换源值 ResourceDictionary1.xaml像下面这样:

    Source="pack://application:,,,/ControlsDLL;component/ResourceDictionary1.xaml">

    或简单如下:
    <UserControl.Resources>
    <ResourceDictionary Source="pack://application:,,,/ControlsDLL;component/ResourceDictionary1.xaml"></ResourceDictionary>
    </UserControl.Resources>

    关于wpf - 在我的类库项目中使用资源字典样式而不合并字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26388915/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com