WPF如何在XAML主页面中使用包含数据模板的资源字典

danny10846

我的资源字典,其中包含一个数据模板,希望用于与其关联的每个VM。

<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>

到我的App.xaml。现在,我希望在我的主要xaml页中使用此资源字典,但是不确定如何执行此操作。

我曾经使用用户控件来执行此操作,如下所示:

   //OLD CODE
    <DataTemplate DataType="{x:Type viewModel:CircuitTrackViewModel}">
                    <userControlLines:CircuitTrackUserControl DataContext="{Binding}"></userControlLines:CircuitTrackUserControl>
                </DataTemplate>

但是,这导致了性能问题。理想情况下,我只想像这样将数据模板放在我的主要xaml页面中,但要使用我的资源字典作为静态资源。先感谢您。

毫米8

x:Key从中删除DataTemplate使其隐式:

<DataTemplate DataType="{x:Type viewModel:CircuitTrackViewModel}">

然后,您只需要将合并ResourceDictionary到您的应用程序中,App.xaml即可将其应用于CircuitTrackViewModel整个应用程序中的所有对象:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在WPF中使用资源字典

来自分类Dev

如何在XAML中使用数据模板

来自分类Dev

如何在UWP中使用资源字典中的路径数据

来自分类Dev

如何在资源字典中绑定数据模板

来自分类Dev

如何在XAML中使用实例化为资源的对象

来自分类Dev

如何在模板中使用js数据?

来自分类Dev

如何在模板中使用模型数据?

来自分类Dev

如何在渲染模板中使用Jinja而不在html页面中显示渲染数据?

来自分类Dev

如何在Django模板中使用函数returnig字典?

来自分类Dev

如何在WPF中的数据模板中使用触发器

来自分类Dev

WPF样式模板与资源字典

来自分类Dev

如何在WPF中使用XAML设置ComboBox标头

来自分类Dev

如何在 WPF/XAML 中使用 Nuget 包中的图标?

来自分类Dev

Wordpress如何在自定义帖子类型中使用主页上的模板

来自分类Dev

如何在XAML中将默认数据模板指定为静态资源

来自分类Dev

如何在XAML中将默认数据模板指定为静态资源

来自分类Dev

如何在包含的页面中使用声明的变量?

来自分类Dev

在不同的WPF xaml用户控件中使用资源

来自分类Dev

在XAML中使用.resx资源的多语言WPF项目

来自分类Dev

如何在XAML中更改资源模板的子值?

来自分类Dev

在 wpf 中使用资源字典中的链接样式

来自分类Dev

如何在工具提示模板中使用剑道图表数据?

来自分类Dev

如何在Django中使用动态数据保存模板

来自分类Dev

如何在指令模板中使用传递的数据?

来自分类Dev

如何在模板中使用组件的数据对象值?

来自分类Dev

如何在(Uno 2.4)中使用Microsoft.UI.Xaml.Controls资源

来自分类Dev

如何在HTML页面中使用数据URL显示图像

来自分类Dev

如何在Laravel路由页面中使用会话数据(auth)

来自分类Dev

包含丢失的数据时,如何在“ dplyr”中使用rowSums()?

Related 相关文章

  1. 1

    如何在WPF中使用资源字典

  2. 2

    如何在XAML中使用数据模板

  3. 3

    如何在UWP中使用资源字典中的路径数据

  4. 4

    如何在资源字典中绑定数据模板

  5. 5

    如何在XAML中使用实例化为资源的对象

  6. 6

    如何在模板中使用js数据?

  7. 7

    如何在模板中使用模型数据?

  8. 8

    如何在渲染模板中使用Jinja而不在html页面中显示渲染数据?

  9. 9

    如何在Django模板中使用函数returnig字典?

  10. 10

    如何在WPF中的数据模板中使用触发器

  11. 11

    WPF样式模板与资源字典

  12. 12

    如何在WPF中使用XAML设置ComboBox标头

  13. 13

    如何在 WPF/XAML 中使用 Nuget 包中的图标?

  14. 14

    Wordpress如何在自定义帖子类型中使用主页上的模板

  15. 15

    如何在XAML中将默认数据模板指定为静态资源

  16. 16

    如何在XAML中将默认数据模板指定为静态资源

  17. 17

    如何在包含的页面中使用声明的变量?

  18. 18

    在不同的WPF xaml用户控件中使用资源

  19. 19

    在XAML中使用.resx资源的多语言WPF项目

  20. 20

    如何在XAML中更改资源模板的子值?

  21. 21

    在 wpf 中使用资源字典中的链接样式

  22. 22

    如何在工具提示模板中使用剑道图表数据?

  23. 23

    如何在Django中使用动态数据保存模板

  24. 24

    如何在指令模板中使用传递的数据?

  25. 25

    如何在模板中使用组件的数据对象值?

  26. 26

    如何在(Uno 2.4)中使用Microsoft.UI.Xaml.Controls资源

  27. 27

    如何在HTML页面中使用数据URL显示图像

  28. 28

    如何在Laravel路由页面中使用会话数据(auth)

  29. 29

    包含丢失的数据时,如何在“ dplyr”中使用rowSums()?

热门标签

归档