Пользовательские элементы управления WPF невидимы

Когда я создаю пользовательский элемент управления в WPF и добавляю его в окно, я не вижу ничего там, где я разместил его в диалоговом окне. Вот что я делаю:

  1. Создаю новое приложение WPF
  2. Добавить -> Новый элемент ... -> Пользовательский элемент управления (WPF): «CustomButton.cs»
  3. Я меняю базовый класс CustomButton на Button вместо Control
  4. Добавить элемент управления CustomButton в мое главное окно.
  5. Когда я запускаю приложение или просматриваю главное окно в дизайнере, я ничего не вижу.

Вот как выглядит код.

CustomButton.cs:

public class CustomButton : Button
{
    static CustomButton()
    {
        DefaultStyleKeyProperty.OverrideMetadata(typeof(CustomButton),
            new FrameworkPropertyMetadata(typeof(CustomButton)));
    }
}

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"
        Title="MainWindow" Height="350" Width="525" xmlns:my="clr-namespace:WpfApplication1">
    <Grid>
        <my:CustomButton Content="Hello World" x:Name="customButton1"
                         HorizontalAlignment="Left" VerticalAlignment="Top" Margin="150,175,0,0" />
    </Grid>
</Window>

Generic.xaml:

<Style TargetType="{x:Type local:CustomButton}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type local:CustomButton}">
                <Border Background="{TemplateBinding Background}"
                        BorderBrush="{TemplateBinding BorderBrush}"
                        BorderThickness="{TemplateBinding BorderThickness}">
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

Я нашел две подсказки относительно того, что происходит, но пока ничего не произошло. Когда я добавил настраиваемый элемент управления, Visual Studio добавила Themes / Generic.xaml, но независимо от того, что я пробую там, я не вижу разницы на экране. Другое дело, что если я закомментирую статический конструктор в CustomButton.cs, внезапно кнопка появится в главном окне. Однако это выглядит не во всех ситуациях (например, если я использую кнопку на панели инструментов).

5
задан Jason 14 July 2011 в 15:42
поделиться