DLL

时间:2018-02-03 18:20:21

标签: c# wpf xaml dll styles

我正在为我制作一个DLL,以简化我的工作,因为我在每个项目中都使用了类,所以当我可以使用一个DLL完成工作时,为什么要复制它们呢?

我还想为它添加一些控件,按钮,所以就像这样:

我已经创建了一个按钮,它运行良好,但是我想为它添加一个自定义样式,当鼠标悬停时禁用背景突出显示,现在我以前使用过这种风格并且运行良好,但在以前我会将样式添加到app.xaml资源中,然后将样式设置为按钮,如:

  

Style =“{StaticResource DisableBackgroundHighlight}”

但由于DLL没有app.xaml,我该怎么办,如何在DLL内部的控件中添加样式? 我在谷歌上发现的只是,将DLL中的资源引用到WPF应用程序的app.xaml,但这不是我想要的, 我试过这个:

<Button x:Class="SRX.Windows.Controls.SRXButton"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         xmlns:local="clr-namespace:SRX.Windows.Controls"
         mc:Ignorable="d" 
         d:DesignHeight="35" d:DesignWidth="100" Content="OK" Background="White" BorderBrush="Blue" Foreground="Blue" MouseEnter="Button_MouseEnter" MouseLeave="Button_MouseLeave" Style="{StaticResource DisableBackgroundHighlight}">
<Button.Resources>
    <Style x:Key="DisableBackgroundHighlight" TargetType="Button">
        <Setter Property="OverridesDefaultStyle" Value="True" />
        <Setter Property="Cursor" Value="Hand" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Button">
                    <Border Name="border" BorderThickness="0" BorderBrush="Black" Background="{TemplateBinding Background}">
                        <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter Property="Opacity" Value="0.8" />
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</Button.Resources>

但它不起作用,它显示“资源”DisableBackgroundHighlight“无法解析”。尽管它编译但在启动时崩溃。 如果我错过了问题解释中的某些内容,请让我解决,提前谢谢。

1 个答案:

答案 0 :(得分:1)

只需将xaml文件添加到项目中即可。我们称之为Generic.xaml,通常是自定义coltrols的模板所在的位置。 该文件将具有以下格式: &lt; ResourceDictionary xmlns =&#34; http://schemas.microsoft.com/winfx/2006/xaml/presentation"                     的xmlns:主题=&#34; CLR-名称空间:Microsoft.Windows.Themes;装配= PresentationFramework.Aero&#34;                     的xmlns:X =&#34; HTTP://schemas.microsoft.com/winfx/2006/xaml"                     X:CLASS =&#34; Your.Domain.Generic&#34;&GT;     &LT; ResourceDictionary.MergedDictionaries&GT;         &lt; ResourceDictionary Source =&#34;您在另一个xaml&#34; /&gt;中定义的任何其他内容     &LT; /ResourceDictionary.MergedDictionaries>     &lt; Style TargetType =&#34; TextBox&#34; .... &LT; / ResourceDictionary中&GT; 在其他程序集上,您可以导入&#34;样式&#34;装配就像其他任何东西: 的xmlns:式=&#34; CLR-名称空间:Your.Domain.Shared&#34; 当然假设您将样式程序集命名为Your.Domain.Shared