问题描述
|
我有一个没有无参数构造函数的用户控件;我们称它为“ 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ѭ。