自定义控件在设计器

时间:2017-08-08 21:21:22

标签: wpf xaml wpf-controls blend

我似乎无法在设计器中看到我的自定义控件在混合或VS.我无法弄清楚可能出现的问题。当我运行应用程序时,它会按预期工作(例如,我看到一个按钮)

主题\ 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:WpfApp1">
<Style TargetType="{x:Type local:MyControl}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type local:MyControl}">
                <StackPanel HorizontalAlignment="Left" VerticalAlignment="Top" >
                    <Button Content="Button" />
                </StackPanel>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

MyControl.cs 名称空间WpfApp1

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

MainWindow.xaml

<Window
    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:wpfApp1="clr-namespace:WpfApp1"
    x:Class="WpfApp1.MainWindow"
    mc:Ignorable="d" 
    Title="MainWindow">

<StackPanel HorizontalAlignment="Left" VerticalAlignment="Top" >
    <wpfApp1:MyControl Height="100" Width="100"/>
</StackPanel>

在assemblyInfo.cs

[assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly )]

[编辑] 无法解释。 将所有代码复制到新的sln中,它按预期工作。 将所有代码重新复制回原来的sln,删除.vs文件夹,重建,重新启动,重新启动机器,检查项目,解决方案文件等......没有什么只是拒绝显示在一个而不是另一个。

0 个答案:

没有答案