1. 新建一个wpf工程,在工程下面新建
一个文件夹themes,在themes下新建两个资源字典文件generic.xaml和PrettySeekBar.xaml
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 ="/PrettyControls;component/themes/PrettySeekBar.xaml" />
</ ResourceDictionary.MergedDictionaries >
</ ResourceDictionary >
PrettySeekBar.xaml
< ResourceDictionary xmlns ="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns : x ="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns : Pretty ="clr-namespace:PrettyControls"
>
< Style TargetType ="{ x : Type Pretty : PrettySeekBar }">
< Setter Property ="Template">
< Setter.Value >
< ControlTemplate TargetType ="{ x : Type Pretty : PrettySeekBar }">
< Grid Width ="50" Height ="50" Background ="Red">
</ Grid >
</ ControlTemplate >
</ Setter.Value >
</ Setter >
</ Style >
</ ResourceDictionary >
2. 新建一个类PrettySeekBar
namespace PrettyControls
{
public class PrettySeekBar : Control
{
#region Constructors
static PrettySeekBar()
{
DefaultStyleKeyProperty.OverrideMetadata( typeof ( PrettySeekBar ), new FrameworkPropertyMetadata ( typeof ( PrettySeekBar )));
}
#endregion
}
}
3. 将wpf工程改为类库工程,并且删除 app.xaml 和 MainWindow.xaml以及对应的cs文件。
之所以新建一个wpf工程而不是直接新建类库共,是因为wpf功能会自动导入wpf项目需要的基本类库。
4. 新建一个Test wpf工程,并且引用PrettyControls项目,然后添加如下:
< Window x : Class ="Test.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"
xmlns : Pretty ="clr-namespace:PrettyControls;assembly=PrettyControls"
>
< Grid >
< Pretty : PrettySeekBar />
</ Grid >
</ Window >
这样就完成自定义控件的第一步了即,显示一个方框。