WPF 类库设计时使用全局资源

WPF 类库设计时使用全局资源

开发 WPF 类库时,由于类库里面不存在 App.xaml.cs 文件, 并且也不允许添加 App.xaml.cs 文件。
为了能够在类库中也能够使用全局字典。最佳的方法是和 Blend 一样,在设计时让设计器引用上某些资源,这样设计器就能工作。

实现方法是在类库里面添加特殊的文件,这个特殊的文件有文件夹和命名的要求,这是在 VisualStudio 的设计器里面写常量固定的路径

  • 在项目里面新建 Properties 文件夹,在 Properties 文件夹里面新建 DesignTimeResources.xaml 资源字典文件.这个文件的命名规则是有约定的,不推荐自己修改。在 csproj 上添加如下代码
<ItemGroup>
    <Page Update="Properties\DesignTimeResources.xaml">
      <Generator>MSBuild:Compile</Generator>
      <SubType>Designer</SubType>
      <ContainsDesignTimeResources>true</ContainsDesignTimeResources>
    </Page>
  </ItemGroup>

上面代码核心就是 ContainsDesignTimeResources 这个属性。理论上可以给任意的 xaml 文件设置这个属性,但是 XAML 设计器在很多 VS 版本上只读取此路径的文件

在 DesignTimeResources.xaml 资源字典添加对其他资源字典的引用,即可实现让类库的设计器找到资源.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在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、付费专栏及课程。

余额充值