作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
关闭。这个问题需要debugging details .它目前不接受答案。
想改进这个问题?将问题更新为 on-topic对于堆栈溢出。
2年前关闭。
Improve this question
我在 ViewModel 中有一个带有 RaisePropertyChanged 的按钮,它将形状中的矩形添加到界面和 ObservableCollection。
在 View 中,我可以通过单击它们来移动或调整选定矩形的大小。它必须在 View 中,因为使用 Canvas,例如在 Window_Loaded 方法中。
private void Window_Loaded(object sender, RoutedEventArgs e)
{
Rectangles = new List<Rectangle>();
foreach (UIElement child in canvas1.Children)
{
if (child is Rectangle)
Rectangles.Add(child as Rectangle);
}
// Reverse the list so the Rectangles on top come first.
Rectangles.Reverse();
}
private void canvas1_MouseDown(object sender, MouseButtonEventArgs e)
{
FindHit(Mouse.GetPosition(canvas1));
SetMouseCursor();
if (MouseHitType == HitType.None) return;
LastPoint = Mouse.GetPosition(canvas1);
DragInProgress = true;
}
最佳答案
这假设您有一个 ObservableCollection
调用Shapes
在你的虚拟机中的某种 ShapeVM
具有适当属性的对象(例如 RectVM
具有宽度和高度等)ItemsControl
当基础集合更改时,将自动将它们添加到 View 中。
<ItemsControl ItemsSource="{Binding Shapes}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.Resources>
<DataTemplate DataType="{x:Type vm:RectVM}">
<Rectangle Canvas.Left="{Binding X}"
Canvas.Top="{Binding Y}"
Width="{Binding Width}"
Height="{Binding Height}" />
</DataTemplate>
</ItemsControl.Resources>
</ItemsControl>
关于c# - WPF MVVM 如何从 ViewModel 中的 View 访问矩形集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59876039/
我是一名优秀的程序员,十分优秀!