动态创建控件
1.容器控件.RegisterName("Name",要注册的控件) //注册控件
2.容器控件.FindName("Name") as 控件类型 //找到控件并转换成相应类型
注意:仅通过 控件.Name来设置是不能通过FindName来找到控件的,必须注册
动态删除控件
1.容器控件.Children.Remove(控件) //移除控件
2.容器控件.UnregisterName("Name") //取消注册
1.控件.SetValue(Grid.RowProperty, 0); //设置控件在Grid面板中的行数
控件.SetValue(Grid.ColumnProperty, 1);
//设置控件在Grid面板中的列数
2.Canvas.SetLeft("控件名", 50); //
设置控件在Canvas面板中的横坐标
Canvas.SetTop("控件名", 50);
//
设置控件在Canvas面板中的纵坐标
当点击Button_Add按钮的时候在Canvas里添加一个Button;
当点击Button_Remove的时候把这个新加的Button移除;
设:Canvas 的Name为 canvas
private void Button_Add_Click(object sender, System.Windows.RoutedEventArgs e)
Button btn = new Button();
//btn.Name = "newButton";//这里设置的Name是找不到的
btn.Width = 100;
btn.Height= 50;
canvas.Children.Add(btn);
canvas.RegisterName("newButton", btn);//注册名字,以便以后使用
private void Button_Remove_Click(object sender, RoutedEventArgs e)
Button btn = canvas.FindName("newButton") as Button;//找到刚新添加的按钮
if (btn != null)//判断是否找到,以免在未添加前就误点了
canvas.Children.Remove(btn);//移除对应按钮控件
canvas.UnregisterName("newButton");//还需要把对用的名字注销掉,否则再次点击Button_Add会报错
运行一下,就可以了。
动态创建控件1.容器控件.RegisterName("Name",要注册的控件) //注册控件2.容器控件.FindName("Name") as 控件类型 //找到控件并转换成相应类型注意:仅通过 控件.Name来设置是不能通
用Frame+Page实现的目的是为了固定当前的窗口,在这个窗口中进行页面的切换。
切换方式使用NavigationService,目的是方便返回之前的界面,不需重新加载,保留上个界面的操作。
使用方式总结
在窗口的前台中加入<Frame/>控件,至少建立一个初始Page,如这里的PageSelect这样一个页。
PageSelect ps = new PageSelect();//实例化PageSelect,初始选择页ps
FrameWork.Content=new Fram
主要讲一下如何通过点击菜单,实现动态加载TabControl的功能,准确来说应该是动态加载TabItem,要实现这个功能,我们需要解决两个问题:
点击菜单的时候,需要传进来一个你要加载的UserControl控件的名称,让程序知道你要加载的是哪个控件。
通过传进来的UserControl控件名实例化UserControl控件(利用反射来实例化UserControl控件)。
关于第一点,我通过在...
1. 创建自定义控件类,并在 XAML 中定义控件的模板和样式。
2. 在需要添加控件的代码中,直接实例化自定义控件,并设置其属性和事件。
3. 将控件添加到需要添加的容器中,比如一个 StackPanel 或 Grid。
4. 要删除控件,可以直接从容器中移除控件。
下面是一个动态添加和删除自定义控件的示例:
```csharp
// 创建自定义控件类
public class MyControl : Control
public MyControl()
// 在构造函数中设置控件的模板和样式
DefaultStyleKey = typeof(MyControl);
// 在 XAML 中定义控件的模板和样式
<Style TargetType="local:MyControl">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="local:MyControl">
<!-- 控件模板 -->
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
// 在代码中动态添加控件
var myControl = new MyControl();
myControl.Width = 100;
myControl.Height = 50;
myControl.Content = "My Control";
myControl.Click += MyControl_Click;
myContainer.Children.Add(myControl);
// 在代码中动态删除控件
myContainer.Children.Remove(myControl);
其中,`myContainer` 可以是任何容器控件,比如一个 StackPanel 或 Grid。