在WPF中使用MVVM将n个矩形添加到canvas
我想在我的mvvm应用程序的主窗口中添加一组矩形。 在我的viewModel中,我有一个对象集合,我用转换器转换为System.Windows.Shapes.Rectangle类(代码如下):
视图模型:
RecognizedValueViewModel { public ObservableCollection BarcodeElements { get { return _BarcodeElements; } set { _BarcodeElements = value; } } public RecognizedValueViewModel() { BarcodeElements = InitializeBarcodeElements(); } }
转换器:
public BarcodeElementToRectangleConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { Rectangle barcodeRectangle = GetRectangleFromBarcodeElement(value as BarcodeElement); return barcodeRectangle; } }
矩形应显示在MainWindow的canvas中:
我会在代码中将Rectangle添加到canvas中,但我现在还没有在运行时有多少个矩形。 我有办法实现这个目标吗? 保护你。
在适当的MVVM方法中,您将拥有一个视图模型,其中包含矩形列表的抽象表示,例如:
public class RectItem { public double X { get; set; } public double Y { get; set; } public double Width { get; set; } public double Height { get; set; } } public class ViewModel { public ObservableCollection RectItems { get; set; } }
然后,您将拥有一个使用ItemsControl可视化此类Rect
项集合的视图。 ItemsControl将Canvas作为其ItemsPanel
和一个适当的ItemContainerStyle
和ItemTemplate
,它们分别绑定到适当的视图模型属性。 它可能看起来像这样:
样式设置器中没有绑定的替代方法(在UWP中不起作用)可能如下所示:
您可以将矩形集合绑定到ItemControl并设置其高度,宽度和边距:
只是一个让你入门的想法……