gpt4 book ai didi

c# - 创建包含 ResourceDictionary 的 DLL

转载 作者:行者123 更新时间:2023-12-05 03:09:46 25 4
gpt4 key购买 nike

我创建了一个新的 WPF 项目。创建项目后,我将项目属性更改为outputtype = classlibrary

这是我的文件结构:

enter image description here

CustomWindow.xaml 是一个 ResourceDictionary,它描述了 CustomWindow.cs 的外观。文件 CustomWindow.xaml 看起来像

<ResourceDictionary x:Class="WpfApplication1.CustomWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:options="http://schemas.microsoft.com/winfx/2006/xaml/presentation/options"
xmlns:sys="clr-namespace:System;assembly=mscorlib">

<Style x:Key="MainWindow" TargetType="{x:Type Window}">
<Setter Property="Template">
<!-- ... -->
</Setter>
</Style>
</ResourceDictionary>

CustomWindow.xaml 看起来像

namespace WpfApplication1
{
public partial class CustomWindow : ResourceDictionary
{
public CustomWindow()
{
InitializeComponent();
}
}
}

现在我添加到App.xaml下面

<Application x:Class="WpfApplication1.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<!-- Common base theme -->
<ResourceDictionary Source="pack://application:,,,/WpfApplication1;component/CustomWindow.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>

我将文件 CustomWindow.xamlproperty buildprocess 更改为 Page

之后我构建了库。现在我想为我的新项目的主窗口使用样式 MainWindow 。我已将 lib 添加到项目引用中。在 App.xaml 中,我添加了一些代码行:

<Application x:Class="WpfApplication2.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<!-- Common base theme -->
<ResourceDictionary Source="pack://application:,,,/WpfApplication1;component/CustomWindow.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>

我尝试构建它,但出现了两个错误。第一个

The resource "MainWindow" couldn't be find.

第二个

An error occurred while finding the resource dictionary "pack://application:,,,/WpfApplication1;component/CustomWindow.xaml".

也许你们中有人有想法。

最佳答案

  1. 在 Visual Studio 中创建一个新的WPF 用户控件库项目。
  2. 向您定义窗口样式的项目添加一个新的 ResourceDictionary。
  3. 从您的WPF 应用程序 项目添加对WPF 用户控件库 项目的引用。
  4. 修改WPF应用项目中的App.xaml文件:

    <Application x:Class="WpfApplication2.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:WpfApplication1"
    StartupUri="Window9.xaml">
    <Application.Resources>
    <ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
    <!-- Common base theme -->
    <ResourceDictionary Source="pack://application:,,,/WpfControlLibrary1;component/CustomWindow.xaml" />
    </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
    </Application.Resources>
    </Application>

“WpfControlLibrary1”是上面示例标记中 WPF 用户控件库的名称,“CustomWindow”是此项目中资源字典的名称。

  1. 在 WPF 应用程序中设置主窗口的 Style 属性,如下所示:

    <Window x:Class="WpfApplication2.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:WpfApplication2"
    mc:Ignorable="d"
    Title="MainWindow" Height="350" Width="525" Style="{StaticResource MainWindow}">
    <Grid>

    </Grid>
    </Window>

关于c# - 创建包含 ResourceDictionary 的 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41825984/

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