gpt4 book ai didi

wpf - 从资源文件加载 WPF 样式

转载 作者:行者123 更新时间:2023-12-04 18:13:46 24 4
gpt4 key购买 nike

我正在尝试从 WPF 自定义控件库中的其他文件加载 WPF 样式
但我无法加载这里是我的解决方案。

解决方案包含两个项目

  • WPF 类型的 WPF 自定义控件库的 WpfTestControls
  • WPF 应用程序库类型的 WpfTestApp,其中引用了 WpfTestControls

  • 来自 WPF 应用程序库的 MainWindow.xaml
    <Window.Resources>
    <Style x:Key="TempStyle" TargetType="{x:Type TextBox}">
    <Setter Property="BorderBrush" Value="Green"/>
    </Style>
    </Window.Resources>
    <Grid>
    <TextBox Height="50px" Width="100px" Style="{DynamicResource TempStyle}"/>
    </Grid>

    来自 WPF 自定义控件库的 Generic.xaml
    <ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="/WpfTestControls;component/TextBoxStyle.xaml"/>
    </ResourceDictionary.MergedDictionaries>

    来自 WPF 自定义控件库的 TextBoxStyle.xaml
    <ResourceDictionary 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Style x:Key="TempStyle" TargetType="{x:Type TextBox}">
    <Setter Property="BorderBrush" Value="Green"/>
    </Style>

    我的 AssemblyInfo.cs 文件包含以下内容
    [assembly: ThemeInfo(
    ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
    //(used if a resource is not found in the page,
    // or application resource dictionaries)
    ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
    //(used if a resource is not found in the page,
    // app, or any theme specific resource dictionaries))]

    但我仍然无法加载样式。
    如果我使用不使用 Generic.xaml 一切正常,例如以下代码按预期工作
    <Window x:Class="WpfTestApp.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">

    <Window.Resources>
    <Style x:Key="TempStyle" TargetType="{x:Type TextBox}">
    <Setter Property="BorderBrush" Value="Green"/>
    </Style>
    </Window.Resources>
    <Grid>
    <TextBox Height="50px" Width="100px" Style="{StaticResource TempStyle}"/>
    </Grid>

    我究竟做错了什么 ?
    提前致谢

    最佳答案

    请帮我回答几件事...

  • “WPF 自定义控件库”程序集与“WpfTestControls”程序集相同吗?
  • 如果没有,那么“WPF 自定义控件库”是否引用了“WpfTestControls”程序集?
  • 您的 WpfTestApp有对“WPF 自定义控件库”和“WpfTestControls”程序集的引用吗?

  • 如果您添加该引用,资源应正确加载。

    我的脚步...
  • 添加“WPF 自定义控件库”,比如“ThemesLibray”
  • 在这个“主题”文件夹下添加两个资源字典

  • TextBoxStyle.xaml
     <ResourceDictionary 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Style x:Key="GreenTextBoxStyle" TargetType="{x:Type TextBox}">
    <Setter Property="Background" Value="Green"/>
    </Style>
    </ResourceDictionary>

    通用.xaml
      <ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="TextBoxStyle.xaml"/>
    </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
  • 我有主要的启动项目“MyWPFTestApp”,它具有对 ThemesLibray 的程序集引用.在那个窗口有ThemesLibrary资源以这种方式合并....
    <Window x:Class="MyWPFTestApp.Window7"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window7" Height="300" Width="300">
    <Window.Resources>
    <ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
    <ResourceDictionary
    Source="/ThemseLibrary;component/Themes/Generic.xaml"/>
    </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
    </Window.Resources>
    <Grid>
    <TextBox Style="{StaticResource GreenTextBoxStyle}"/>
    </Grid>
    </Window>

  • 当我启动 MyWPFTestApp 时,我看到带有绿色文本框的窗口。

    关于wpf - 从资源文件加载 WPF 样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7761681/

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