【问题标题】:Dynamic Panel of Buttons WPF C# Common Use按钮的动态面板 WPF C# 常用
【发布时间】:2014-07-28 21:32:03
【问题描述】:

我正在尝试找到从数据库列表创建按钮表的最佳或常见做法。

为了我的使用,我正在创建更多的销售点类型屏幕。我希望类别在输入屏幕上作为按钮加载。这些按钮将有一个简单的任务,即显示一个由实际项目的更动态创建的按钮组成的屏幕。这些按钮会将项目添加到,我们称之为票证。

我找到的解决方案很少。我也在尝试对此进行编码,以便其他人可以相当快地接受它。我非常生疏,只偶尔编码一次。所以我尝试遵循常见的方法。我有一些想法,但代码变得难以阅读,主要是因为我。

我看到了下面的链接,但不确定 ListBox 是否是一个很好的容器。 Dynamic filling WrapPanel buttons from DB, setting the event handlers

我确信我必须使用 wrappenel,但我是将它放在容器中还是直接使用它。对于按钮之间的间距等问题,我是否将其放入 Xaml 或全部编码?我想我想多了,需要略过。

谢谢,

【问题讨论】:

  • 您所链接的答案就是您所需要的。您还需要为 Button 设置边距,以便您可以看到按钮之间的一些间距。可以通过 XAML 完成,那为什么要使用 C#?
  • 因为其余的都在 C# 中。我知道 .Net 2.0、VB 6 和 VB 应用程序中的 VB,但开始使用 C#。它确实有效,但列表框似乎没有必要。也许更好/别的。
  • 其余部分需要使用 C# 或 VB。仅使用 XAML 不可能实现一切。这个问题的答案是你开始的好方法。

标签: c# wpf wrappanel


【解决方案1】:

听起来您想要一个绑定到您的类别的ItemsControl,并将WrapPanel 作为ItemsPanelButton 将进入 ItemTemplate

<ItemsControl ItemsSource="{Binding CategoriesFromDatabase}"> 

    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapPanel />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>

    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Button Content="{Binding}" 
                    Command="{Binding RelativeSource={RelativeSource AncestorType=ItemsControl},Path=DataContext.AddToTicketCommand}"
                    CommandParameter="{Binding}" />
        </DataTemplate>
    </ItemsControl.ItemTemplate>

</ItemsControl>

这里我假设您的视图模型具有属性“CategoriesFromDatabase”(您从数据库中填充的一个 IEnumerable)和一个将类别作为参数的ICommand“AddtoTicketCommand”。

【讨论】:

  • 使用这种方法,我似乎不需要弹出带有实际项目的弹出窗口。我只是将数据绑定从类别更改为过滤的项目列表。然后刷新。
  • 在包含 ItemsControl 后发现更多。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-22
  • 1970-01-01
  • 2020-04-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多