Мой словарь ресурсов, который содержит шаблон данных, который я хочу использовать для каждой связанной с ним виртуальной машины.
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:viewModel="clr-namespace:IntSimulator.ViewModels.EquipmentVMs"
xmlns:converters="clr-namespace:IntSimulator.Converters"
xmlns:local="clr-namespace:IntSimulator.ResourceDictionary">
<converters:ScaleXCoordConverter x:Key="ScaleXCoordConverter"></converters:ScaleXCoordConverter>
<converters:ScaleYCoordConverter x:Key="ScaleYCoordConverter"></converters:ScaleYCoordConverter>
<DataTemplate x:Key="KeyMcKeyface" DataType="{x:Type viewModel:CircuitTrackViewModel}">
<ItemsControl ItemsSource="{Binding LineCoords}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<!--When we click on the line, it will increase Z-index and change colour, to bring occupied track forward and highlight -->
<Line
X1="{Binding X1, Converter={StaticResource ScaleXCoordConverter}}" Y1="{Binding Y1, Converter={StaticResource ScaleYCoordConverter}}"
X2="{Binding X2, Converter={StaticResource ScaleXCoordConverter}}" Y2="{Binding Y2, Converter={StaticResource ScaleYCoordConverter}}"
Stroke="{Binding DataContext.Colour.Colour, RelativeSource={RelativeSource AncestorType=ContentPresenter, AncestorLevel=2}}"
StrokeThickness="1" StrokeEndLineCap="{Binding EndLineCap}" StrokeStartLineCap="{Binding StartLineCap}">
<Line.InputBindings>
<MouseBinding Gesture="LeftClick" Command="{Binding DataContext.OccupyTrackCommand, RelativeSource={RelativeSource AncestorType=ContentPresenter, AncestorLevel=2}}" CommandParameter="True"/>
</Line.InputBindings>
<Line.RenderTransform>
<TranslateTransform X="{Binding DataContext.DisplayViewModel.MainOffsetX, RelativeSource={RelativeSource AncestorType=Window, AncestorLevel=1}}"
Y="{Binding DataContext.DisplayViewModel.MainOffsetY, RelativeSource={RelativeSource AncestorType=Window, AncestorLevel=1}}"/>
</Line.RenderTransform>
</Line>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
Я добавил
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary x:Key="CircuitTracksResourceDictionary" Source="ResourceDictionary/CircuitTracksResourceDictionary.xaml"/>
</ResourceDictionary>
Для моего приложения. Xaml. Теперь я хочу использовать этот словарь ресурсов на своей главной странице xaml, но не знаю, как это сделать.
Я использовал для этого пользовательские элементы управления, например:
//OLD CODE
<DataTemplate DataType="{x:Type viewModel:CircuitTrackViewModel}">
<userControlLines:CircuitTrackUserControl DataContext="{Binding}"></userControlLines:CircuitTrackUserControl>
</DataTemplate>
Но это вызывало проблемы с производительностью. В идеале я бы просто хотел разместить шаблон данных на своей главной странице xaml, как это, но используя словарь ресурсов в качестве статического ресурса. Заранее спасибо.