WPF не применяет dataTemplate - PullRequest
0 голосов
/ 19 мая 2018

В свое свободное время я пытаюсь реорганизовать один проект в полную модель MVVM и использую привязку данных WPF, шаблоны и т. Д.Но здесь есть проблема.У меня есть этот элемент управления, который не применяет шаблон данных.

    <UserControl
                 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" 
                 xmlns:vm="clr-namespace:WPFCADCore.ViewModels.CADPrimitives;assembly=WPFCADCore"
                 xmlns:local="clr-namespace:WPFCADCoreControls.Views.Editors" x:Class="WPFCADCoreControls.Views.Editors.EditorBaseView"
                 mc:Ignorable="d" 
                 d:DesignHeight="300" d:DesignWidth="300"
                 d:DataContext="{d:DesignData Source=EditorBaseDesignData.xaml}">
        <UserControl.Resources>
            <DataTemplate DataType="{x:Type vm:CADLinePrimitiveViewModel}">
                <Line X1="{Binding Begin.X}" Y1="{Binding Begin.Y}" 
                  X2="{Binding End.X}" Y2="{Binding End.Y}"
                  Stroke="{Binding LineColor}" StrokeThickness="{Binding LineWidth}">
                </Line>
            </DataTemplate>
        </UserControl.Resources>
        <ItemsControl ItemsSource="{Binding Entities}">
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <Canvas Background="White"/>
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>
        </ItemsControl>
    </UserControl>

Это все, что я вижу Холст с текстовой строкой

Так что привязка к источнику работает, но dataTemplate нетприменение автоматически.

Я пытался использовать DataType = "vm: CADLinePrimitiveViewModel" DataType = "CADLinePrimitiveViewModel" Нет результатов.

И я не могу вставить этот шаблон в ItemSource, потому что будут разные типыобъекты там, а не только линии

ObservableCollection<ICADEntityViewModel> Entities

Где ICADEntityViewModel является интерфейсом

Есть предложения?Обходные?

1 Ответ

0 голосов
/ 19 мая 2018

Какой-то ответ был найден, больше похоже на обходной путь.Я разрабатывал библиотеку классов WPF, и когда я создал приложение WPF и скопировал туда код, он начал работать правильно.Понятия не имею, почему он не работает в библиотеке классов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...