在按钮单击时在 Wfp 中使用用户控件

Posted

技术标签:

【中文标题】在按钮单击时在 Wfp 中使用用户控件【英文标题】:Using usercontrol in Wfp on Button click 【发布时间】:2019-03-27 10:09:23 【问题描述】:

我正在使用用户控件。

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

【问题讨论】:

您好,欢迎来到 Stack Overflow,我似乎无法在您的问题中找到问题,介意 editing 您的问题包含它吗?另外,当您使用它时,我可以要求您稍微格式化一下您的代码吗?现在看起来很可怕,并且(至少对我而言)不必要地难以理解 【参考方案1】:

单击 btn_UC2 时,您正在从面板中删除 Control1。从您的代码中删除它,如下所示

private void btn_UC2_Click(object sender, RoutedEventArgs e)
       
           try
           

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


           

       

【讨论】:

【参考方案2】:

我建议您将 ItemsControl 与 ObservableCollection 上的绑定一起使用,并从您的代码隐藏中添加/删除此 ObservableCollection 中的内容。更多的是 mvvm。

【讨论】:

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

按钮单击事件未在用户控件中触发,在另一个用户控件中动态创建

用户单击删除按钮时如何删除动态控件(文本框和按钮)

动态创建到 WPF 表单的用户控件上的按钮单击事件

android开发中怎么控件按钮不让用户频繁的点击

如何在ms-access vba中单击命令按钮单击以更改代码以更改控件属性

C#WPF用户控件没有show()方法,那怎么实现单击一个按钮后弹出一个用户控件呢?