c# - 添加可变数量的控件

标签 c# wpf xaml

我对 WPF 比较陌生,有人能给我指出最好的方法吗?

我将创建一个框图,其中包含连接各个 block 的线。这些盒子都排成一排,所以我正在考虑一个带有矩形和线条的水平对齐的堆栈面板。

矩形将填充选项卡页,并且可单击。

问题是直到运行时我才知道会有多少个矩形。

什么是正确的方法来做到这一点,应该是在代码隐藏中,我找出矩形的数量并添加和定位它们以及代码中的行,或者我可以在 XAML 中做一些更灵活的事情吗? ?

矩形的数量在 2 到 10 之间,所以如果是 2,我不希望它们填满选项卡的整个宽度。因此,理想情况下,我希望矩形具有最小和最大宽度并居中,这样它看起来仍然很漂亮。

提前非常感谢

最佳答案

执行类似操作的正确方法是使用 <ItemsControl>并绑定(bind)其ItemsSource模型的一部分,代表图表 block 的集合。数据绑定(bind)是 WPF 的一个非常强大的部分。不幸的是,它也太复杂,无法在答案中快速描述,因此我建议阅读一些文章/代码示例以加快速度。

如果您使用ObservableCollection<DiagramBlock> (或任何其他实现 INotifyCollectionChanged 的集合)对于您的 block ,在代码中添加或删除 block 将导致 UI 相应更改。

关于c# - 添加可变数量的控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16554699/

相关文章:

C#:堆栈有两种类型的项目

c# - 在 Entity Framework 中动态传递要在运行时选择的列名称

c# - 全屏WPF应用程序充当操作系统

c# - 如何动态设置和获取xaml中的标签?

c# - Winrt,根据绑定(bind)值改变颜色

c# - 使用 Json.NET 序列化时如何省略空集合

c# - 为什么三元运算符不是这样工作的?

c# - 当鼠标悬停在按钮WPF上时,如何制作更改图像的图像按钮?

wpf - 类型工具箱:BusyIndicator was not found

c# - 通过 C# WPF 表单中的代码在网络浏览器(IE 或 chrome)中打开超链接 URI(www.google.com)