Я пытаюсь создать некоторые данные времени разработки, используя XAML. Я боюсь, что не могу найти в Интернете руководство о том, как создать массив, ссылаясь на другие объекты, созданные в XAML. Нечто похожее на это ...
<MyClass x:Key="Obj1" Prop1="..." Prop2="..." />
<MyClass x:Key="Obj2" Prop1="..." Prop2="..." />
<x:Array Type={x:Type my:MyClass} x:Key="MyObjects">
<StaticResource Key="Obj1" />
<StaticResource Key="Obj2" />
</x:Array>
К сожалению, вышесказанное не работает. Есть ли что-то, что будет работать?
Я воспроизвел ошибку, создав пустое приложение Xamarin Forms с последней версией VS Studio для Mac. Я добавил это к ContentPage.Resources
...
<ContentPage.Resources>
<ResourceDictionary>
<n:String x:Key="myString">Hello World</n:String>
<x:Array x:Key="myArray" Type="{x:Type n:String}">
<StaticResource Key="myString" />
</x:Array>
</ResourceDictionary>
</ContentPage.Resources>
Я получаю следующую ошибку при запуске приложения:
Xamarin.Forms.Xaml.XamlParseException
... StaticResource not found for key myString
Я создаю приложение Xamarin.Forms с использованием последней версии Visual Studio для Mac.
Кроме того, я знаю, что могу создавать объекты как прямые потомки массива. Я пытаюсь создать их отдельно, чтобы включить их в разные коллекции.
Обновление (после предложения @ junior-jiang-msft)
Я попробовал предложение Джуниора Цзяна, но получаю следующую ошибку сборки ...
/Users/savasp/Projects/test/test/MainPage.xaml: Error: The given key 'Xamarin.Forms.Xaml.XmlName' was not present in the dictionary.
Вот пример формы XAML в новом ванильном проекте Xamarin.Forms ...
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:d="http://xamarin.com/schemas/2014/forms/design" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" x:Class="test.MainPage">
<ContentPage.Resources>
<x:String x:Key="m1">hello</x:String>
<x:String x:Key="m2">world</x:String>
<x:Array x:Key="array" Type="{x:Type x:String}">
<Setter Value="{StaticResource m1}" />
<Setter Value="{StaticResource m2}" />
</x:Array>
</ContentPage.Resources>
<StackLayout>
<!-- Place new controls here -->
<ListView ItemsSource="{StaticResource array}">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Label Text="{Binding}" />
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
</ContentPage>