Здрасте. В общем только начал изучать WPF так что не пинайте. Решил сделать чатик по типу скайпа, вайбера. Расписал все на бумаге какие классы, функции буду использовать. Ну все думаю понеслась душа в рай. Написал <DataTemplate DataType="{x:Type models:MessageBase}"</DataTemplate> и присел на стул на 4 часа в поисках почему не видит мой класс. Подскажите где я не правильно что то написал, или что то упустил
Мой XAML формы:
| Код | <Window x:Class="MyViberChat.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:models="clr-namespace:MyViberChat" Title="MainWindow" Height="350" Width="525"> <Window.Resources> <DataTemplate DataType="{x:Type models:MessageBase}"> </DataTemplate> </Window.Resources> </Window>
|
Классы которые мне нужны в DataTemplate:
| Код | using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;
namespace MyViberChat { public class MessageBase { public virtual string Text { get; protected set; } public MessageBase(string text) { Text = text; } }
public class MyMessage : MessageBase { public MyMessage(string text) : base(text) { } } public class FriendMessage : MessageBase { public FriendMessage(string text) : base(text) { } } }
|
Код формы:
| Код | using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes;
namespace MyViberChat { /// <summary> /// Логика взаимодействия для MainWindow.xaml /// </summary> public partial class MainWindow : Window { public List<MessageBase> Messages { get; set; }
public MainWindow() { InitializeComponent(); Messages.Add(new MyMessage("Hello")); Messages.Add(new FriendMessage("Hi")); Messages.Add(new MyMessage("Are you busy")); Messages.Add(new FriendMessage("No")); } } }
|
|