我想创建一个继承自Grid的新类,但由于某些原因它不能工作,我不知道为什么。
首先我收到此错误:
应用程序崩溃:委托给实例方法不能为空'这个'。
我找到的主题对我没有帮助。我不知道为什么"这个"应为null。此错误的行是底部代码上的Task.Delay(1)。
所以基本上我想创建一个自定义网格,继承自网格,所以我可以使用它,但有其他属性和一些逻辑。原因是:我想将一些代码从可见的page.xaml.cs移动到Grid本身,因此它可以布局并完成剩下的工作,只对自身很重要。
但是当我在.cs的可见页面上使用它时,它不起作用。没有必要在xaml中使用。
我不知道是否有必要继承Grid,或者是否足以创建类扩展。随意改变我对该主题的看法。
My Class看起来像这样:
CustomGrid.cs
namespace Solution
{
class CustomGrid : Grid
{
private GridConfiguration config;
MainViewModel mainViewModel;
public CustomGrid(GridConfiguration initialConfig)
{
config = initialConfig;
SetValue(RowProperty, config.Pos.Y);
SetValue(ColumnProperty, config.Pos.X);
}
public void Unload()
{
}
public void LoadAnotherConfig (GridConfiguration newConfig)
{
unload();
config = newConfig;
}
private void setUpGrid()
{
switch (config.Type.ToLower())
{
case "html":
GenerateWebView();
break;
case "pdf":
GeneratePdf();
break;
case "image":
GenerateImage();
break;
case "video":
GenerateVideo();
break;
default:
GeneratePlaceHolder();
break;
}
}
}
}
我正在创建和添加它们的地方在这里:
List<Dictionary> allCellsToPresent ) new List<Dictionary>();
private async void GeneratePage()
{
foreach (var cellInfo in allCellsToPresent)
{
//create custom grid for each cellInfo
CustomGrid grid = new CustomGrid(cellInfo);
grid.SetUpGrid();
Tapped += Grid_Tapped;
MainGrid.Children.Add(grid);
}
await Task.Delay(100);
ScrollViewer.ChangeView( 0, 0, 1, false);
}
MainGrid放置在ScrollViewer中以进行滚动和缩放。我必须等待任何Task.Delay,以便之前启动的进程将在动画之前完成,否则动画期间会出现毛刺,因为MainGrid仍会添加一些子项并更改ScrollViewers内部大小。
答案 0 :(得分:0)
Sunsteen Wu在自定义面板的评论中的例子确实帮助了我。我不得不改变一些元素,但那是次要的。
又来了:
您也可以尝试custom panel - Sunteen Wu - MSFT 2月14日9:25