Я пытаюсь использовать шаблон mvvm с wpf для создания интерфейса для проекта, ранее выполненного в форме win.
В этом проекте у меня есть объект, который содержит некоторые List <>, которые я должен показывать в режиме реального времени на своем интерфейсе с помощью комбинированного списка, проблема в том, что комбинированный список не изменяет его значения. Я использую DLL mvvm для создания NotifyPropertyChanged. Я думаю сделать какую-то ошибку, но я не знаю, где это.
Я пытался сделать простой код только с одним списком в viewmodel и без модели, но результат не изменился.
<Window x:Class="ProvaComboBox.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ProvaComboBox"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<Grid.DataContext>
<local:ViewModel />
</Grid.DataContext>
<Button Content="Generate" Command="{Binding Generate}"/>
<Button Content="Clear" Command="{Binding Clear}"/>
<ComboBox ItemsSource="{Binding Path=Word, Mode=OneWay}" />
</Grid>
</Window>
//view Model
class ViewModel:ObservableObject
{
private List<string> _word;
public List<string> Word
{
get { return _word; }
}
public ViewModel()
{
_word = new List<string>();
}
public ICommand Generate
{ get { return new RelayCommand(GenerateExecute); } }
void GenerateExecute()
{
_prova.Add("pippo");
_prova.Add("pluto");
RaisePropertyChanged("Word");
}
public ICommand Clear
{ get { return new RelayCommand(ClearExecute); } }
void ClearExecute()
{
_prova.Clear();
RaisePropertyChanged("Word");
}
}
//View:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
}
Я думаю, что проблема в RaisePropertyChanged, но он работает правильно с обычными переменными.
Я пробовал также использовать ObservableCollection, и это работает, но я не могу использовать его с реальным проектом.
(p.s. Это мой первый вопрос по переполнению стека, извините, если я сделал какую-то ошибку!)