在按钮上的Wfp中使用usercontrol

时间:2019-03-27 10:09:24

标签: c# wpf xaml user-controls

我正在使用用户控件。

我有一个基本表单,其中有2个按钮btn_UC1,btn_UC2和一个面板 我有2个用户控件uc1,uc2,它们具有不同的工具来显示各种数据 我想做什么:

单击btn_UC1时,我要在面板中显示uc1 单击btn_UC2时,我想在面板中显示uc2

但是我不想单击btn_UC2来关闭,清除或删除uc1,它应该在后台。

与点击btn_UC1的功能相同

另外,当我关闭uc2时,它应该显示uc1

在显示任何用户控件之前,我尝试使用了调用panel.cchildren.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>

2 个答案:

答案 0 :(得分:0)

单击btn_UC2将从面板中删除Control1。从下面的代码中删除此代码

private void btn_UC2_Click(object sender, RoutedEventArgs e)
       {
           try
           {

               pnl_UC.Children.Add(Control2);
           }
           catch (Exception err)
           {


           }

       }

答案 1 :(得分:0)

我建议您使用带有ObservableCollection上的绑定的ItemsControl,然后从您的代码隐藏区中添加/删除此ObservableCollection中的内容。更多mvvm。