我早些时候做了一个very similar post,在那儿我问过如何重用部分Xaml代码。尽管这对于我所拥有的一小部分是有效的,但在当前的规模上并不能完全解决问题。
使用Xamarin,我有一个带有两页的选项卡式布局。一个页面由一个具有三层的网格组成,其中两层在两个页面上都相同。第三层在两个页面上都必须不同。当前两个页面都在同一个文件中。这意味着大部分代码只是复制粘贴,并且由于前两个行中的某些标签的ID /名称不能相似,这使得编辑某些标签的值变得更加困难。
我目前在代码后面用setter设置了一个字符串变量。
using Microsoft.FSharp.Core;
....
Action<string> logger = Console.WriteLine;
App.perform(new Action<string>(Console.WriteLine), args);
App.perform(logger, args);
App.perform(new Action<string>(msg => Console.WriteLine(msg)), args);
App.perform((new Action<string>(msg => Console.WriteLine(msg))), args);
App.perform((new Func<string,Unit>(msg => Console.WriteLine(msg))), args);
App.perform(new Func<string,Unit>(Console.WriteLine), args);
尽管可以,但我仍然有很多重复的代码(如下所示)。
这是每个页面的内容。特定于页面的唯一内容在底部。其余部分将被正确粘贴到第二页。下面的代码没有任何ID。
System.Console.WriteLine
就像我说的那样,这种工作方式非常糟糕,但是代码却非常糟糕。我希望可以更改多个Label的值,但不能给它们提供相同的ID。这意味着我必须总是将这些值设置两次,或者在其中一个Labels上获取一些set属性,然后使用这种setter自动设置另一个标签/在后面的代码中具有属性。
我被告知,要使用更大范围的代码,可以使用ContentView。但是,我似乎无法在两个ContentPage中重用它们。
如何做到这一点,以便可以在两个页面上重用前两个网格行的代码,并能够在第三个网格布局中使用不同的内容?如果可以的话,我可以不必使用上述代码设置两个标签。
我对应用程序开发非常陌生,因此,下面的代码的任何多余的解释都适用。