2012-06-05 3 views
0

У меня есть listview, для которого я хочу отформатировать несколько полей из заполняемого объекта. Первоначально я создал шаблон данных, который исключил InvalidOperationException с пустой страницей и не указал причину исключения. Я нашел статью о CodeProject и у меня есть DataTemplate теперь встроенный в сеттер определение:ListView возвращающее исключение при загрузке

<UserControl x:Class="Servpro.Framework.ViewerModule.Views.MenuView" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     mc:Ignorable="d" 
     d:DesignHeight="580" d:DesignWidth="210"> 
<UserControl.Resources> 
    <Style TargetType="ListView"> 
     <Setter Property="ItemTemplate"> 
      <Setter.Value> 
       <DataTemplate> 
        <StackPanel Orientation="Vertical"> 
         <TextBlock 
          Background="Transparent" 
          Foreground="Black" 
          FontSize="12" 
          Text="{Binding Path=CurrentEvent.EventTypeName, Mode=OneWay}" /> 
         <TextBlock 
          Background="Transparent" 
          Foreground="Black" 
          FontSize="12" 
          Text="{Binding Path=CurrentEvent.EventMessage, Mode=OneWay}" /> 
         <StackPanel Orientation="Horizontal"> 
          <TextBlock 
           Background="Transparent" 
           Foreground="Black" 
           FontSize="8" 
           Text="{Binding Path=CurrentEvent.EventLoggedOn, Mode=OneWay}" 
           Margin="0,0,10,0" /> 
          <TextBlock 
           Background="Transparent" 
           Foreground="Black" 
           FontSize="8" 
           Text="{Binding Path=CurrentEvent.Program, Mode=OneWay}" /> 
          <TextBlock 
           Background="Transparent" 
           Foreground="Black" 
           FontSize="8" 
           Text=":" /> 
          <TextBlock 
           Background="Transparent" 
           Foreground="Black" 
           FontSize="8" 
           Text="{Binding Path=CurrentEvent.Method, Mode=OneWay}" /> 
         </StackPanel> 
        </StackPanel> 
       </DataTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</UserControl.Resources> 
<Grid Margin="4"> 
    <ListView 
     ItemsSource="{Binding Path=EventList, Mode=OneWay}" 
     Height="568" VerticalAlignment="Top" 
     Width="201" HorizontalAlignment="Left" 
     Margin="4" > 
     <Border CornerRadius="11" /> 
     <ListView.BorderBrush > 
      <SolidColorBrush Color="#99FFFFFF" Opacity="0" /> 
     </ListView.BorderBrush> 
     <ListView.Background> 
      <SolidColorBrush Color="#99FFFFFF" Opacity="0"/> 
     </ListView.Background> 
    </ListView> 
</Grid> 

С определением ASIS теперь я получаю исключение во время выполнения, и, наконец, указывая на XAML. Но я до сих пор не понимаю, почему я это получаю. Исключение:

'Добавить значение в коллекцию типа' System.Windows.Controls.ItemCollection 'выбрасывает исключение.' Номер линии «55» и позиция линии «13».

Он имеет внутреннее исключение:

{ «Операция недопустима в то время как ItemsSource используется Access и изменять элементы с ItemsControl.ItemsSource вместо..»}

Я ясно с помощью ItemsSource так почему я получаю это исключение?

+0

Какая ошибка? Пожалуйста, поместите ошибку, которую мы ищем ... – Hituptony

+0

Ошибка - это строка темы. Элемент коллекции должен быть пустым перед использованием ItemSource. –

ответ

0

Оказалось, что проблема установки пограничных и фоновых кистей на главной линии XAML была проблемой. Я удалил их и использовал Setter.Property в своем DataTemplate, и приложение запускается сейчас.

Итак, для будущих проектов: при определении вида ListView с шаблоном данных важно, чтобы стиль оставался с шаблоном данных. Мой окончательный дизайн страницы оказался значительно иным, поскольку я добавил некоторое форматирование после this blog

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