Да, это почти то же самое только x:Key
вместо x:Name
.
<ContentPage.Resources>
<ResourceDictionary>
<DataTemplate x:Key="myTemplate"></DataTemplate>
</ResourceDictionary>
</ContentPage.Resources>
и в коде вашей страницы:
var myTemplate = (DataTemplate)Resources["myTemplate"];
Если вы хотите, чтобы определить его в App.xaml, вы можете сделать это. Вы должны создать файл вручную. Посмотрите на образец https://github.com/xamarin/xamarin-forms-samples/tree/master/WorkingWithStyles
Чтобы создать app.xaml:
- создать файл App.xaml
- добавить
partial
к определению класса из App в App.cs
- вызова
InitializeComponent()
в конструктор App
- перейти к свойствам App.xaml и установить
- Сложение Действие: Embedded Resource
- пользовательского инструмента: MSBuild: UpdateDesignTimeXaml
Он должен выглядеть следующим образом:
App.xaml
<Application
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="App6.App">
<Application.Resources>
<ResourceDictionary>
<DataTemplate x:Key="myTemplate"></DataTemplate>
</ResourceDictionary>
</Application.Resources>
</Application>
App.cs
public partial class App : Application
{
public App()
{
InitializeComponent();
var myTemplate = (DataTemplate)Resources["myTemplate"];
MainPage = new Page2();
}
protected override void OnStart()
{
// Handle when your app starts
}
protected override void OnSleep()
{
// Handle when your app sleeps
}
protected override void OnResume()
{
// Handle when your app resumes
}
}
Невозможно определить его как отдельный класс вместо ресурса на странице или в приложении? –
Вы имеете в виду что-то вроде 'class MyDataTemplate: DataTemplate' ?? –
Да, но в XAML .......... padding для SO comment system –