其他分享
首页 > 其他分享> > CodeGo.net>在Win8中创建DataTemplate

CodeGo.net>在Win8中创建DataTemplate

作者:互联网

如何在Win8(WinRT)App中使用文件后面的代码创建数据模板,即使用C#而不是xaml.

解决方法:

我可以看到为什么要根据所显示的内容来创建模板,这可能有用.
使其工作的关键是Windows.UI.Xaml.Markup.XamlReader.Load().它接受一个包含您的数据模板的字符串,并将其解析为一个DataTemplate对象.然后,您可以将该对象分配到要使用它的任何位置.在下面的示例中,我将其分配给ListView的ItemTemplate字段.

这是一些XAML:

<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
    <ListView x:Name="MyListView"/>
</Grid>

这是创建DataTemplate的代码背后:

public sealed partial class MainPage : Page
{
    public MainPage()
    {
        this.InitializeComponent();
    }

    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        var items = new List<MyItem>
        {
            new MyItem { Foo = "Hello", Bar = "World" },
            new MyItem { Foo = "Just an", Bar = "Example" }
        };
        MyListView.ItemsSource = items;

        var str = "<DataTemplate xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\">" +
                "<Border Background=\"Blue\" BorderBrush=\"Green\" BorderThickness=\"2\">" +
                    "<StackPanel Orientation=\"Vertical\">" +
                        "<TextBlock Text=\"{Binding Foo}\"/>" +
                        "<TextBlock Text=\"{Binding Bar}\"/>" +
                    "</StackPanel>" +
                "</Border>" +
            "</DataTemplate>";
        DataTemplate template = (DataTemplate)Windows.UI.Xaml.Markup.XamlReader.Load(str);
        MyListView.ItemTemplate = template;
    }
}

public class MyItem
{
    public string Foo { get; set; }
    public string Bar { get; set; }
}

标签:net-4-5,windows-8,c
来源: https://codeday.me/bug/20191031/1979799.html