2015-11-17 3 views
1

Я пытаюсь изучить приложения для программирования для универсальной платформы Windows. В настоящее время я работаю с ListView, и я определяю его макет в <DataTemplate>, но код - один беспорядок. Есть ли способ определить <DataTemplate> в отдельной папке? Я обыскал сеть, но я не смог найти решение. Не могли бы вы мне помочь? Благодарю.ListView DataTemplate в отдельной папке

+1

Как выглядит ваш DataTempalte? Вы можете, например, определить UserControl, а затем просто ссылаться на него в ресурсах. Вы можете определить * DataTemplate * в отдельном файле ресурсов, а затем объединить словари в ресурсы app/page/listview. – Romasz

ответ

3

Я бы всегда рекомендовал создать ResourceDictionary для такого рода вещей. Вот пример настройки:

Создать папку Ресурсы> Добавить> Новый пункт> Ресурсный словарь "Templates.xaml"

В вашем App.xaml добавить

<Application.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="Resources/Templates.xaml"/> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Application.Resources> 

В Templates.xaml вы можете добавить любой шаблон вы хотите, например, так:

<ResourceDictionary 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:local="using:thestory.Resources"> 


<DataTemplate x:Key="ListItemTemplate"> 

</DataTemplate> 

Теперь вы можете ссылайтесь на этот шаблон, где вам это нужно, используя {StaticResource ListItemTemplate}

Удачи!

PS: Я бы на самом деле также рекомендую делать то же самое для стилей и других приложений широких ресурсов, таких как размеры шрифтов, кисти, фоны и т.д.

+0

Он работает, спасибо ... Но у меня есть кнопка внутри этого шаблона с событием onClick, которое не вызывается сейчас. Не могли бы вы сказать, почему? Спасибо :) – miskohut

+0

Используйте Command и ViewModel вместо onClick в коде позади. –

0

В datatemplate.xaml определить DataTemplate:

<ResourceDictionary 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <DataTemplate> 

    </DataTemplate> 
</ResourceDictionary> 

В UserControl см. таблицу данных:

<UserControl 
    x:Class="<assemblyName>.Themes.MyUserControl1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="using:PerpetuumSoft.DataManager.UniApp.UI.Themes" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d" 
    d:DesignHeight="300" 
    d:DesignWidth="400"> 
    <UserControl.Resources> 
     <ResourceDictionary> 
      <ResourceDictionary.MergedDictionaries> 
       <ResourceDictionary Source="ms-appx:///<AssemblyName>/Themes/DataTemplate.xaml" /> 
      </ResourceDictionary.MergedDictionaries> 
     </ResourceDictionary> 
    </UserControl.Resources> 
    <Grid> 

    </Grid> 
</UserControl> 
Смежные вопросы