是否可以在XAML文件中定义DataTemplate并在代码中使用它?
根据这个答案: Silverlight: Creating a DataTemplate in XAML, and assigning it in code?
我可以定义它并将其添加到App.xaml中的Resources字典中,但我的PCL项目中没有App.xaml文件。
这听起来像是一件微不足道的事情,必须有一种标准的方法来做到这一点。
您可以找到DataTemplate here
的示例答案 0 :(得分:0)
是的,只有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:
partial
App.cs
添加到App的类定义中
InitializeComponent()
App
它应该是这样的:
<强>的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
}
}