我正在使用用户控件。
我有一个基本的表单,有2个按钮btn_UC1,btn_UC2,和一个面板,我有2个用户控件uc1,uc2,有不同的工具,以显示我想做的各种数据:
点击btn_UC1我想在面板上显示uc1点击btn_UC2我想在面板中显示uc2
但我不想关闭,清除,点击btn_UC2删除uc1,它应该在后台。
点击btn_UC1时功能相同
当我关闭uc2时,它应该显示uc1
在尝试显示任何usercontrol之前,我已尝试使用clear.centren.clear调用的clear功能。
C# WPF
UC1 Control1 = new UC1();
UC2 Control2 = new UC2();
private void btn_UC1_Click(object sender, RoutedEventArgs e)
{
try
{
//pnl_UC.Children.Remove(Control2);
pnl_UC.Children.Clear();
pnl_UC.Children.Add(Control1);
}
catch (Exception err)
{
}
}
private void btn_UC2_Click(object sender, RoutedEventArgs e)
{
try
{
pnl_UC.Children.Remove(Control1);
// pnl_UC.Children.Clear();
pnl_UC.Children.Add(Control2);
}
catch (Exception err)
{
}
}
<Window x:Class="UserControlTest.MainWindow"
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:local="clr-namespace:UserControlTest"
mc:Ignorable="d"
Title="MainWindow" Height="449.024" Width="870.182"
>
<Grid>
<Button x:Name="btn_UC1" Content="Button" HorizontalAlignment="Left" Margin="65,62,0,0" VerticalAlignment="Top" Width="159" Height="34" Click="btn_UC1_Click"/>
<Button x:Name="btn_UC2" Content="Button" HorizontalAlignment="Left" Margin="65,162,0,0" VerticalAlignment="Top" Width="159" Height="34" Click="btn_UC2_Click"/>
<StackPanel x:Name="pnl_UC" HorizontalAlignment="Left" Height="399" Margin="281,10,0,0" VerticalAlignment="Top" Width="573">
</StackPanel>
</Grid>
</Window>
您正在点击btn_UC2从面板中删除Control1。从下面的代码中删除此项
private void btn_UC2_Click(object sender, RoutedEventArgs e)
{
try
{
pnl_UC.Children.Add(Control2);
}
catch (Exception err)
{
}
}
我建议你在ObservableCollection上使用带有绑定的ItemsControl,从你的代码隐藏中你可以添加/删除这个ObservableCollection中的东西。它更像是mvvm。