Silverlight 绑定网格的列数和行数

Silverlight 绑定网格的列数和行数,silverlight,windows-phone-7,mvvm,binding,grid,Silverlight,Windows Phone 7,Mvvm,Binding,Grid,我有一个WP7应用程序,到目前为止,我已经在MVVM框架内实现了它 我现在想扩展这个应用程序,其中一部分涉及一个网格,我不确定是否可以通过绑定来完成我想做的事情。具体地 将需要可变数量的列-我不知道如何使用绑定实现这一点。如果可以,我想根据列的数量改变列的宽度 行数相同,涉及的行数可变 我可以用这里需要的所有信息设置一个VM,但我看不出我可以绑定到网格使其工作。我还想在网格中包含一些变量数据,但我不知道如何使用绑定来实现这一点。在我刚刚绑定到对象集合的列表框中工作得很好,但这是完全不同的 在这种

我有一个WP7应用程序,到目前为止,我已经在MVVM框架内实现了它

我现在想扩展这个应用程序,其中一部分涉及一个网格,我不确定是否可以通过绑定来完成我想做的事情。具体地

将需要可变数量的列-我不知道如何使用绑定实现这一点。如果可以,我想根据列的数量改变列的宽度

行数相同,涉及的行数可变

我可以用这里需要的所有信息设置一个VM,但我看不出我可以绑定到网格使其工作。我还想在网格中包含一些变量数据,但我不知道如何使用绑定来实现这一点。在我刚刚绑定到对象集合的列表框中工作得很好,但这是完全不同的

在这种情况下,我应该只在代码后面生成代码吗?我很高兴这样做。。。但如果可能的话,我会很乐意尝试通过绑定来实现

  • 谢谢

您可以扩展当前网格控件,添加一些自定义依赖属性(例如列和行)并绑定到这些属性。这将允许您保持MVVM模式

例如

公共类MyGridControl:Grid
{
公共静态只读依赖项属性行属性=
Register(“Rows”、typeof(int)、typeof(MyGridControl)、newpropertyMetadata(RowsChanged));
公共静态只读依赖项属性列属性=
Register(“Columns”、typeof(int)、typeof(MyGridControl)、newpropertyMetadata(ColumnsChanged));
公共静态无效行更改(对象发送方,DependencyPropertyChangedEventArgs参数)
{
((MyGridControl)sender.RowsChanged();
}
公共静态无效列更改(对象发送方,DependencyPropertyChangedEventArgs参数)
{
((MyGridControl)sender.ColumnShanged();
}
公共整数行
{
获取{return(int)GetValue(RowsProperty);}
set{SetValue(RowsProperty,value);}
}
公共int列
{
获取{return(int)GetValue(ColumnsProperty);}
set{SetValue(ColumnsProperty,value);}
}
公共空间RowsChanged()
{
//用这个做点什么。行
//例如,设置行定义和高度
}
公共空白栏schanged()
{
//用这个做点什么
//例如,设置列定义和宽度
}
}
如果您的VM具有属性“Rows”和“Columns”,那么XAML将如下所示: