【问题标题】:Copy control button in run time在运行时复制控制按钮
【发布时间】:2014-03-24 01:34:06
【问题描述】:

大家好。我用一些(WPF)表单创建了一个应用程序。我在一个表单上有一个按钮。我想在运行时将此按钮复制到第二个表单上,而无需再次创建它。

例如:我在表单 1 上有“X”按钮。在运行时,我在表单 2 上创建此按钮的副本,其所有属性值与表单 1 上的原始按钮相同。

按钮:

<Button Content="Open Window" Click="ButtonClicked" Height="25"
HorizontalAlignment="Left" Margin="379,264,0,0" Name="button1" 
VerticalAlignment="Top" Width="100" />

我可以避免重现这段代码吗?

【问题讨论】:

  • 所以首先告诉我们你真正使用的是什么,wpf 或 winforms
  • 我在我的应用程序中使用 WPF
  • 我删除了 Winforms,因为那时没有使用。
  • 抱歉这个错误谢谢
  • 你为什么要复制这个按钮,你能告诉我们原因

标签: c# wpf


【解决方案1】:

您可以在App.xaml 中为按钮定义自己的样式:

<Application x:Class="WpfButton.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
        <Style x:Key="myBtnStyle" TargetType="Button" >
            <Setter Property="Content" Value="Open Window" />
            <Setter Property="Height" Value="25" />
            <Setter Property="Width" Value="100" />
            <Setter Property="HorizontalAlignment" Value="Left" />
            <Setter Property="Margin" Value="379,264,0,0" />
            <Setter Property="VerticalAlignment" Value="Top" />
            <EventSetter Event="Click" Handler="myBtn_Click" />
        </Style>
    </Application.Resources>
</Application>

后面的代码:

public partial class App : Application
{
    public void myBtn_Click(object sender, EventArgs e)
    {
        Button btn = sender as Button;
        // ...
    }
}

当您想为按钮分配较早创建的样式时,您应该使用StaticResource 和您的样式名称:

 <Button Style="{StaticResource myBtnStyle}" />

【讨论】:

    【解决方案2】:

    如果您想创建一个精确的克隆,那么您需要序列化组件并将 ExpressionConverter 注入到序列化过程中。这将创建一个“深度”克隆。见here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-14
      • 2021-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多