在我做好了主页面,开始做左边的功能。
在做第一个button按钮的基本信息区出错了。
说:System.ArgumentException:””System.Windows.Controls.DockPanel”不是属性”Name”的有效值”,如下图:
一开始我以为是我没有XAML代码出错,但是我发现没有错,就是加了DockPanel。如下图:
但是我没有想到是DockPanel出现问题。以为是C#的问题,发现有没有错。
C#代码:
private void AddItem(object sender, string trname, UserControl UC)
{
UCTabItemWithClose item = new UCTabItemWithClose();
item.Content = UC;
item.Name = trname;//名称
item.Header = string.Format(trname);//标头名称
TC.Items.Add(item);
TC.SelectedItem = item;
}
private void 基本信息_Click(object sender, RoutedEventArgs e)
{
基本信息区 my基本信息区 = new 基本信息区();
AddItem(sender, 基本信息区.Content.ToString(), my基本信息区);
}
后来我把XAML的DockPanel删掉,在button加上Content=“基本信息”,启动项目,点击button居然没有报错。
我才意识到是Content这个混蛋惹得祸,在主页面哪里也说了,不能直接在button加图片和文字,加了就说设置多个Content属性,所以我就用了DockPanel。
其实解决不是很困难,既然它说不是有效值,那我们就给他有效值。
AddItem的方法不有改变。
private void AddItem(object sender, string trname, UserControl UC)
{
UCTabItemWithClose item = new UCTabItemWithClose();
item.Content = UC;
item.Name = trname;//名称
item.Header = string.Format(trname);//标头名称
TC.Items.Add(item);
TC.SelectedItem = item;
}
基本信息_Click点击事件要改变,直接声明button里的name,把它变成有效值就可以了。
private void 基本信息_Click(object sender, RoutedEventArgs e)
{
基本信息区 my基本信息区 = new 基本信息区();
var a = sender as Button;
AddItem(sender, a.Name, my基本信息区);
}
基本信息区是我一个测试页面的,这样就成功嵌套进去了。