Я экспериментирую с производными пользовательскими элементами управления и создал то, что, по моему мнению, было бы самым простым из возможных производных:
Я создал проект настраиваемого элемента управления в VS 2010 и изменил базовый класс для CustomControl1 с Control
на Calendar
.
Затем я вошел в Generic.xaml и удалил стиль по умолчанию, созданный для CustomControl1.
Наконец-то я создал приложение WPF для использования элемента управления.
Когда я добавлял пользовательский элемент управления в MainWindow приложения, я ожидал увидеть обычный календарь WPF, так как я получил от Calendar
и не вносил изменений в шаблоны элементов управления Calendar.
Вместо этого ничего не отображается во время разработки или выполнения. Главное окно остается пустым. Я не уверен, что происходит, но совершенно очевидно, что я сделал ошибочное предположение где-то вдоль линии.
Может кто-нибудь прояснить это для меня? Спасибо за вашу помощь.
Кстати - зачем я это делаю? Я расширяю элемент управления Calendar, но мне нужно только изменить шаблон элемента управления CalendarDayButton. Прежде чем перейти к моим модификациям, я решил, что сначала должен отобразить неизмененный Календарь. Как я уже сказал, я думаю, что где-то ошибочно предполагаю.
CustomControl1.cs
Вот код для CustomControl1:
using System.Windows;
using System.Windows.Controls;
namespace WpfCustomControlLibrary1
{
public class CustomControl1 : Calendar
{
static CustomControl1()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(CustomControl1), new FrameworkPropertyMetadata(typeof(CustomControl1)));
}
}
}
Generic.xaml
Вот разметка для Generic.xaml, которая находится в папке Темы элемента управления:
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfCustomControlLibrary1">
</ResourceDictionary>
MainWindow
Наконец, вот разметка MainWindow.xaml:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:WpfCustomControlLibrary1="clr-namespace:WpfCustomControlLibrary1;assembly=WpfCustomControlLibrary1" Title="MainWindow" Height="350" Width="525">
<Grid>
<WpfCustomControlLibrary1:CustomControl1 />
</Grid>
</Window>
WpfApplication1 содержит ссылку на проект WpfCustomControlLibrary1.