Добавление значения из TextBox в коллекцию MVVM WPF
Подскажите, пожалуйста, каким образом можно добавить значение введённое в TextBox в ObservableCollection и отобразить ее, например, в DataGrid.
<Window x:Class="WpfApp2.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:WpfApp2"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Window.DataContext>
<local:MainWindowViewModel/>
</Window.DataContext>
<DockPanel>
<TabControl>
<TabItem Header="Категории">
<StackPanel>
<TextBlock Text="Введите наименование категории" Margin="5" FontSize="14"/>
<WrapPanel>
<TextBox Text="{Binding Category}" Width="300"/>
<Button Grid.Column="1" Height="20" Content="Добавить" Margin="5"
Command="{Binding CategoryCommand}"/>
</WrapPanel>
<TextBlock Text="Наименование" HorizontalAlignment="Center" FontSize="14"/>
<Grid >
<DataGrid ItemsSource="{Binding Categories}"
AutoGenerateColumns="False" CanUserAddRows="False" >
<DataGrid.Columns>
<DataGridTextColumn Header="Категория" Width="*" Binding="{Binding Category}" IsReadOnly="True"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
</StackPanel>
</TabItem>
</TabControl>
</DockPanel>
public class MainWindowViewModel
{
public ObservableCollection<Categories> Categories { get; set; }
public MainWindowViewModel()
{
//CategoryCommand = new LambdaCommand(OnCommandExecuted, CanCommandExecute);
Categories = new ObservableCollection<Categories>
{
new Categories {Category = "Продукты питания"},
};
}
public ICommand CategoryCommand { get; }
private bool CanCommandExecute(object p)
{
return true;
}
private void OnCommandExecuted(object p)
{
//Код для проверки команды(создает пустую строку в DataGrid)
Categories _category = new Categories();
Categories.Add(_category);
}
}
public class Categories : BaseViewModel
{
private string category;
public string Category
{
get { return category; }
set
{
if (category != value)
{
category = value;
OnPropertyChanged("Category");
}
}
}
}
