设置C#类库项目中可以添加WPF元素

1. 引言

    最近在搭建一个WPF的插件框架,需要将WPF界面封装到各个插件类库中。而默认情况下建立的C#类库,是不能添加WPF元素的,这就需要我们手动对项目设置进行一些调整。下面就说说具体的设置过程。

2. 创建WpfLib项目

    我们创建一个名称为WpfLib的类库项目,这时鼠标右键项目名称》添加,弹出的菜单如下图:

 

可以发现,菜单项中并没有关于WPF元素的菜单项(如窗口、页、用户控件、资源字典)。

 

3. 修改WpfLib.csproj

 用记事本打开WpfLib.csproj文件,情形如下:

 

在其第一个PropertyGroup节点的最后添加一行:

<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

    此时,WpfLib.csproj的第一个PropertyGroup节点变为:

  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProjectGuid>e04974de-aa8c-429e-bb72-ac23afca7f9c</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>WpfLib</RootNamespace>
    <AssemblyName>WpfLib</AssemblyName>
    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <Deterministic>true</Deterministic>
    <ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
  </PropertyGroup>

    其中,黄色的那行就是我们上一步添加上去的。此时我们再右键项目名称》添加,弹出的菜单项就发生了变化了:

    这说明我们此时就可以添加WPF元素了。我们在项目中添加个Window1,可以成功添加。别急,看看Window1.xaml,

    看来我们的工作还没有做完……

4. 添加相关引用

     在主程序中添加如下引用:

              PresentationCor(4.0.0.0)

    PresentationFramework(4.0.0.0)

    System.Xaml(4.0.0.0)

    WindowBase(4.0.0.0)

     此时再看添加的Window1.xaml,发现已经正常了。但莫急,请继续往后看……

5. 修改Assembly.cs

再Assembly.cs中添加一行代码:

[assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)]

这行代码的作用是,当WPF寻找控件时,给其指明主题字典(控件样式)在类库中的存储位置。

 

Over!

转载于:https://www.cnblogs.com/stonemqy/p/11363502.html

要在C#类库添加WPF窗口,需要使用以下步骤: 1. 在Visual Studio创建一个新的类库项目。 2. 添加对PresentationFramework和WindowsBase的引用。这可以通过右键单击项目并选择“添加引用”来完成。 3. 在项目添加一个新的WPF窗口或用户控件。可以右键单击项目并选择“添加”->“新建项”->“WPF窗口”或“WPF用户控件”。 4. 在WPF窗口添加必要的控件和事件处理程序。 以下是一个简单的示例,展示如何在C#类库添加WPF窗口: ```csharp using System.Windows; namespace MyLibrary { public partial class MyWpfWindow : Window { public MyWpfWindow() { InitializeComponent(); } private void Button_Click(object sender, RoutedEventArgs e) { MessageBox.Show("Hello, world!"); } } } ``` 在这个示例,我们创建了一个名为"MyWpfWindow"的WPF窗口,并在窗口添加了一个按钮控件。当用户单击按钮时,会弹出一个消息框,显示"Hello, world!"文本。 注意:要在类库使用WPF窗口,必须在另一个项目(如WPF应用程序或控制台应用程序)引用该类库并显示该窗口。例如,在WPF应用程序,可以使用以下代码创建并显示"MyWpfWindow"窗口: ```csharp using MyLibrary; namespace MyWpfApp { public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void Button_Click(object sender, RoutedEventArgs e) { MyWpfWindow wpfWindow = new MyWpfWindow(); wpfWindow.Show(); } } } ``` 在这个示例,我们在WPF应用程序创建了一个名为"MainWindow"的窗口,并添加了一个按钮控件。当用户单击按钮时,会创建并显示"MyWpfWindow"窗口。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值