使用C#在ListView中使用WrapGrid(不带xaml)

时间:2013-09-26 13:40:20

标签: c# xaml windows-8 windows-store-apps winrt-xaml

有人知道如何将以下xaml代码翻译成C#?

<ListView>
     <ListView.ItemsPanel>
          <ItemsPanelTemplate>
                <WrapGrid Orientation="Horizontal" />
          </ItemsPanelTemplate>
     </ListView.ItemsPanel>
</ListView>

2 个答案:

答案 0 :(得分:0)

我不确定为什么要在代码中创建它,将ItemPanelTemplate放在页面或App.xaml中的资源中可能会更好。
否则在这里如何通过代码创建它:

ItemsPanelTemplate template=new ItemsPanelTemplate();
var str = "<ItemsPanelTemplate xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\">" 
     +"<WrapGrid Orientation=\"Horizontal\" />" 
     +"</ItemsPanelTemplate>";
ItemsPanelTemplate panelTemplate = (ItemsPanelTemplate)Windows.UI.Xaml.Markup.XamlReader.Load(str);

ListView listView=new ListView();    
listView.ItemsPanel = panelTemplate ;

答案 1 :(得分:0)

this链接我得出的结论是ItemsPanelTemplate主要属于XAML,因为您无法从简单的运行时API更改它们。因此,您需要坚持使用XAML声明,或者使用XamlReader加载XAML。

using Windows.UI.Xaml.Markup;

private ListView GetListView()
{

    const string xaml = @"<ListView xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"">
                             <ListView.ItemsPanel>
                                  <ItemsPanelTemplate>
                                        <WrapGrid Orientation=""Horizontal"" />
                                  </ItemsPanelTemplate>
                             </ListView.ItemsPanel>
                        </ListView>";
    var lv = (ListView)XamlReader.Load(xaml);
    return lv;
}