我创建了一个自定义控件并为其定义了样式。我希望在使用控件时可以自动应用该样式。
现在我的代码结构如下:
自定义控件继承自ProgressBar
namespace MyProjectNamespace
{
[TemplatePart(Name = SomePartName, Type = typeof(PathFigure))]
public class RadialProgressBar : ProgressBar
{
// class definitions and logic
}
}
样式在名为RadialProgressBar.xaml的ResourceDictionary中定义
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:MyProjectNamespace">
<Style TargetType="local:RadialProgressBar">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="local:RadialProgressBar">
<!-- controls -->
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
当我必须使用控件时,必须像这样引用ResourceDictionary:
<Window x:Class="FWUpdateLoadingSpinner.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:MyProjectNamespace"
mc:Ignorable="d"
Title="MainWindow" Height="300" Width="300">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="RadialProgressBar.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<local:RadialProgressBar />
</Window>
是否有可能做到这一点,所以在我想使用控件时不必定义ResourceDictionary?仅具有默认模板(如普通.NET控件(可以覆盖))。
这是一个大项目的一部分,如果可能,我希望将此文件与App.xaml等文件分开。