在单击按钮的Wpf中使用usercontrol

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在单击按钮的Wpf中使用usercontrol相关的知识,希望对你有一定的参考价值。

我正在使用用户控件。

我有一个基本的表单,有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。

以上是关于在单击按钮的Wpf中使用usercontrol的主要内容,如果未能解决你的问题,请参考以下文章

WPF 导航和销毁当前 UserControl

在WPF中UserControl

WPF MVVM 在按钮单击时在视图之间导航

WPF中UserControl控件的关闭

UserControl在wpf中使用父元素?

wpf usercontrol,将按钮的命令参数绑定到父用户控件