C# 如何将XAML中定义的样式表引用存储在单独的类中,以便在任何XAML窗口中使用?
我有一个XAMLMyXamlStyleSheet.XAML,其中定义了按钮和各种其他控件的样式。 我还定义了一个C#classMyButtonClass:Button,用于截取基本Button类并声明我想要提供的任何自定义功能 在我要使用的XAML窗口中,我声明了一个xmlns:lc,源代码指向C#classMyButtonClass 我想做的是当我声明这个自定义按钮时C# 如何将XAML中定义的样式表引用存储在单独的类中,以便在任何XAML窗口中使用?,c#,wpf,xaml,C#,Wpf,Xaml,我有一个XAMLMyXamlStyleSheet.XAML,其中定义了按钮和各种其他控件的样式。 我还定义了一个C#classMyButtonClass:Button,用于截取基本Button类并声明我想要提供的任何自定义功能 在我要使用的XAML窗口中,我声明了一个xmlns:lc,源代码指向C#classMyButtonClass 我想做的是当我声明这个自定义按钮时 <lc:MyButtonClass .../> 我有一个对MyXamlStyleSheet中定义的样式的引用
<lc:MyButtonClass .../>
我有一个对MyXamlStyleSheet中定义的样式的引用,该样式存储在MyButtonClass中,以便我可以从XAML窗口访问它
我应该在类和xaml声明中写什么
<lc:MyButtonClass Style="{StaticResource ???"..../>
到目前为止,我一直使用合并词典直接引用XAML样式表。然而,我想用这个不同的路径来做 找到了答案。这与在Window.Resources部分将词典合并到XAML窗口相同。从类中实例化具有正确路径的ResourceDictionary,并将该字典合并到Button类的字典中
namespace YourNamespace
{
public class MyCustomButton : Button
{
public MyCostumButton()
{
ResourceDictionary res = Application.LoadComponent(new Uri("/Directory/StyleDirectory.xaml", UriKind.RelativeOrAbsolute)) as ResourceDictionary;
if (res == null)
return;
Resources.MergedDictionaries.Add(res);
Style = (Style)FindResource("Name of the x:Key your gave your style");
}
}
}
这样,您就可以在一个文件夹中编写完整的标准化控件库,其中每个控件都分配了一个C#类。因此,如果您有同一控件的多个实现,则始终可以定义最基本的行为,并查看类引用的XAML文件 你实际上不想为MyButtonClass定义默认样式吗?不,我想能够自定义它,并在我的整个应用程序中看到该自定义反映,跨越大约20个窗口。如果我理解正确,你想将按钮的样式属性设置为一种样式,其x:键在自定义按钮的属性中定义?或者为什么不能使用StaticResource标记扩展设置样式?这是一种直接从字典设置样式的方法。我的意思是要有一个单独的文件夹,其中每个控件都有自己的类,每个类都有对字典和特定键的引用。这样,当我通过xmlns标记使用控件类时,我可以从样式表中指定其默认样式。