【发布时间】:2014-10-21 15:04:41
【问题描述】:
我正在尝试在使用 MVVM 模式时将视图定位到布局为矩形的窗口中。
在 WinForms 中,我可以使用矩形的宽度、高度、x 和 y 来轻松定位控件,只需在控件上设置相同的属性。
现在我正在使用 MVVM 将此代码重写为 wpf,但我迷路了。
这就是我想要做的:
我认为这可能有效,但它没有。
<Grid ShowGridLines="True">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<ItemsControl ItemsSource="{Binding VirtualScreens}" Grid.IsSharedSizeScope="True" >
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Grid.Row="{Binding Row}" Grid.Column="{Binding Column}" Content="{Binding Name}"></Button>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
public class VirtualScreen : ObservableObject
{
string name;
int row;
int column;
public string Name
{
get { return name; }
set
{
name = value;
RaisePropertyChanged(() => Name);
}
}
public int Row
{
get { return row; }
set
{
row = value;
RaisePropertyChanged(() => Row);
}
}
public int Column
{
get { return column; }
set
{
this.column = value;
RaisePropertyChanged(() => Column);
}
}
}
感谢您的任何帮助
【问题讨论】:
-
抱歉,您需要提供更多详细信息,或者可能是 WinForms 应用程序的屏幕截图,以便我们更好地了解您要完成的工作。
-
在 StackOverflow 中发布问题之前请阅读 "How To Ask"。
-
网格可以像这样布置,它们会随着窗口自动调整内容的大小。画布使用 x,y,w,h 坐标系来布局控件,但它们需要您在调整窗口大小时更新布局。在提出问题之前尝试创建一个小型原型,可以防止不必要的否决。
标签: c# wpf layout mvvm rectangles