我有一个XAML MyXamlStyleSheet.xaml ,我在其中定义了Button和各种其他控件的样式。 我还有一个C#class MyButtonClass:Button ,我定义它来拦截基本的Button类并声明我想要给它的任何自定义功能。
在我想要使用的XAML窗口中,我声明了 xmlns:lc ,其中源指向C#类 MyButtonClass 。
我想要做的是当我宣布这个自定义按钮时
<lc:MyButtonClass .../>
我有 MyXamlCtyleSheet 中定义的样式的参考,该样式存储在 MyButtonClass 中,以便我可以从XAML窗口访问它。
我会在课堂上和xaml声明中写些什么?
<lc:MyButtonClass Style="{StaticResource ???"..../>
到目前为止,我已使用 MergedDictionaries 直接引用XAML样式表。但是我想用这条不同的路径来做。
答案 0 :(得分:1)
找到答案。这与在 Window.Resources 部分中将字典合并到XAML窗口相同。从您的类中,您使用正确的路径实例化ResourceDictionary并将该字典合并到Button类的Dictionary中。
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文件。