【问题标题】:Dynamically creating List of Buttons in WPF application [closed]在 WPF 应用程序中动态创建按钮列表 [关闭]
【发布时间】:2015-02-17 19:06:27
【问题描述】:

我即将开发我的第一个 WPF。

我想获取按钮列表。这些按钮由 WPF 顶部的一个“添加”按钮生成。

所以当我按下“添加”时,列表中会出现一个新按钮。

首先我如何创建列表?使用 ListBox 还是 StackPanel?我认为 StackPanel 的外观会很好,但我不确定如何在那里添加按钮...

另一个问题:通常,当我生成一个对象(我来自 Java)时,每个对象都会获得一个唯一的实例。但是我如何给每个按钮一个唯一的名字呢?

希望你能帮到我

【问题讨论】:

  • 如果你想把它做好,WPF 可能会有点棘手。我建议你买一本关于这个问题的好书,StackOverflow 不是解决如此广泛问题的正确格式。
  • 请缩小您的问题范围,并清楚地说明您的代码的不足之处,以便我们提供帮助。最好的问候,
  • 谢谢您-这本书已经订购了,我希望它会在星期五在我的邮箱中

标签: c# wpf list button wpf-controls


【解决方案1】:

停下来。现在。

在你做任何事情之前,学习基本的 MVVM。 WPF 不是 WinForms(或其Java 等效项)。在您知道什么时候应该这样做之前,您不应该以编程方式更改 UI。

这些按钮应该代表数据。该数据应该在您的视图模型中的某个地方。然后你会有一个像这样的ItemsControl

<ItemsControl ItemsSource="{Binding MyCollection}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Button ... />
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

现在您可以根据绑定对象获取所需的所有唯一信息(无需唯一名称)。您甚至可以让ItemsControl 使用StackPanel 作为底层面板(顺便说一下,默认情况下会这样做)。

【讨论】:

  • 我同意@BradleyDotNET - 您应该遵守与 WPF 应用程序开发相关的不同软件范例。最好的问候,
  • 投反对票的人愿意发表评论吗?
  • 我目前不能 100% 理解你。您的示例是否类似于创建按钮的模板?
  • @jens12345675432 是的,这正是它的作用。正如我在 cmets 中提到的另一个答案,我会确保在尝试数据模板之前掌握 MVVM 和基本绑定。听起来你明白了。
  • 感谢您的帮助 - 我昨天订购了一本书,但无法等待。我现在将继续阅读网络中的 DataTemplates
【解决方案2】:

由于您需要动态行为并且这是您的第一个 WPF 应用程序,因此您应该将其写在后面的代码中。

只需为您的StackPanel 命名(为其添加名称属性),并处理按钮中的单击事件(只需在 WPF 可视化编辑器中双击该按钮)。

在单击事件的处理程序中,您可以执行以下操作:

this.MyStackPanel.Children.Add(new Button());

当然,要为该按钮添加行为,您可以将其分配给一个变量并添加适当的事件处理程序。

【讨论】:

  • 由于这是他的第一个 WPF 应用程序,请学习正确的方法。当然,这会奏效,只是不是一个好主意。
  • 不确定我是否同意,ItemsControl 是(imo)wpf 中的一个高级主题,我不确定初学者是否能够完全掌握它。
  • @BradleyDotNET,这当然是见仁见智。但在我看来,WPF 有一个陡峭的学习曲线,将它与 MVVM 混合可能会导致 OP 需要几周的时间才能做任何事情。循序渐进地学习是件好事。
  • 谢谢你,这对我帮助很大!
  • 我同意编写背后的代码不是问题,如果这是您的第一个应用程序。我不会太担心,因为无论如何 XAML 只是定义对象。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-18
  • 2011-07-08
  • 2013-07-20
  • 2011-04-09
  • 1970-01-01
  • 2012-10-19
相关资源
最近更新 更多