在XAML中命名没有默认构造函数的用户控件

问题描述

| 我有一个没有无参数构造函数用户控件;我们称它为“ 0”。我想在另一个控件的XAML代码(称为
MainWindow
)中插入一个名为
myControl
WithoutDefaultConstructor
。但是,出现此编译器错误:   类型\'WithoutDefaultConstructor \'   不能具有名称属性。值   类型和无认类型   构造函数可用作项目   在ResourceDictionary中。 如何在不向
WithoutDefaultConstructor
添加无参数构造函数的情况下解决此问题? 这是
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:WpfApplication1=\"clr-namespace:WpfApplication1\" Title=\"MainWindow\" 
 Height=\"350\" Width=\"525\">
    <WpfApplication1:WithoutDefaultConstructor Name=\"myControl\">
    </WpfApplication1:WithoutDefaultConstructor>
</Window>
以下是
WithoutDefaultConstructor.xaml.cs
内容
using System.Windows.Controls;

namespace WpfApplication1
{
    public partial class WithoutDefaultConstructor : UserControl
    {
        private int I_really_need_to_initialize_this_int;

        public WithoutDefaultConstructor(int i)
        {
            InitializeComponent();
            I_really_need_to_initialize_this_int = i;
        }
    }
}
    

解决方法

        与ѭ9属性无关。您只是无法使用带有XAML参数的构造函数来创建对象的实例。在XAML 2009中有一种方法可以做到这一点,但是在编译成BAML的代码中就没有这种方法,例如这样。     ,        只是不做。而是在用户控件上公开一个“ 10”属性。如果您确实要确保已明确设置它,请暴露一个
int?
并抛出一个if12ѭ。