Есть ItemsControl, если в его DataTemplate посетить разметку все работает отлично.
Привязка данных:
<UserControl.DataContext>
<ViewModel:LogCollectionViewModel/>
</UserControl.DataContext>
Сам ItemsControl:
<ItemsControl ItemsSource="{Binding AllJournal.AllEvents}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border Margin="0 0 2.5 2.5" Height="200"
Width="300">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="25"/>
<RowDefinition Height="175"/>
</Grid.RowDefinitions>
<Rectangle Grid.Row="0"
Grid.RowSpan="2"
Fill="White"
Opacity="0.5"/>
<Grid Grid.Row="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="75"/>
<ColumnDefinition Width="125"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0"
Grid.Row="0"
Text="{Binding RecordNo}"
Style="{StaticResource TextBlockMainStyle}"/>
<TextBlock Grid.Column="1"
Grid.Row="0"
Text="{Binding Time}"
ToolTip="Время события"
Style="{StaticResource TextBlockMainStyle}"/>
<TextBlock Grid.Column="2"
Grid.Row="0"
Text="{Binding Date}"
ToolTip="Дата события"
Style="{StaticResource TextBlockMainStyle}"/>
</Grid>
<local:SignalEventView Grid.Row="1"/>
</Grid>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Но если весь код из DataTemplate вынести в отдельный UserControl и в DataTemplate добавить только ссылку на этот UserControl, то все перестает работать.
Пример:
<ItemsControl.ItemTemplate>
<DataTemplate>
<local:LogEventView/>
</DataTemplate>
</ItemsControl.ItemTemplate>
Разметка LogEventView:
<UserControl.DataContext>
<ViewModel:LogEventVM/>
</UserControl.DataContext>
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Styles/LogEventStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
<Border Margin="0 0 2.5 2.5" Height="200"
Width="300">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="25"/>
<RowDefinition Height="175"/>
</Grid.RowDefinitions>
<Rectangle Grid.Row="0"
Grid.RowSpan="2"
Fill="White"
Opacity="0.5"/>
<Grid Grid.Row="0">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0"
Grid.Row="0"
Text="{Binding RecordNo}"
Style="{StaticResource TextBlockMainStyle}"/>
<TextBlock Grid.Column="1"
Grid.Row="0"
Text="{Binding Time}"
ToolTip="Время события"
Style="{StaticResource TextBlockMainStyle}"/>
<TextBlock Grid.Column="2"
Grid.Row="0"
Text="{Binding Date}"
ToolTip="Дата события"
Style="{StaticResource TextBlockMainStyle}"/>
</Grid>
<local:SignalEventView Grid.Row="1"/>
</Grid>
</Border>
Скриншоты:
Если разметка напрямую в DataTemplate:
Если в DataTemplate вставить <local:LogEventView/>, то появляется только количество событий, но с нулевыми данными:
Как решить данный вопрос? Так как разметки будет очень много, и оставлять все о одном UserControl не целесобразно.


все перестает работать? – Андрей NOP Feb 01 '18 at 12:43