2013-09-26 2 views

ответ

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 ; 
+0

Это хорошее решение, но в настоящее время я работаю с шаблоном MVP (Model-View-Presenter), что означает, что в этом проекте я не использую xaml. Мой вид почти пуст. спасибо! –

+0

Одна вещь, последняя строка вашего кода неверна. Это должно быть так: «listView.ItemsPanel = panelTemplate;» «вместо listView.ItemsPanel = template;» –

+0

MVP - не рекомендуемый patern при использовании xaml, вам действительно стоит подумать о переходе на MVVM, это многое сделает вам легче. –

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; 
} 
+0

Это хорошее решение, но в этом случае он не работает для меня, мне нужно полностью C# решение без xaml. спасибо! –

+0

Как мой ответ говорит, что «Шаблоны» принадлежат XAML, я отчаянно жду полного решения C#. – Xyroid

Смежные вопросы