подскажите, что я сделал не правильно, у меня ICommand записано в раздел MVVM, но он не работает, если я ICommand переношу в раздел Model, то все работает, почему так никак понять не могу:
<Window x:Class="MultiplicProject.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:MultiplicProject"
xmlns:mvvm="clr-namespace:MultiplicProject.ViewModel"
mc:Ignorable="d"
Title="MainWindow" Height="200" Width="800">
<Window.DataContext>
<mvvm:MainViewModel/>
</Window.DataContext>
<Grid DataContext="{Binding AllCountClass}">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBox Text="{Binding A}" Width="100" Height="50" FontSize="45"/>
<Label Content="x" Grid.Column="1" FontSize="45" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<TextBox Text="{Binding B}" Width="100" Height="50" Grid.Column="2" FontSize="45"/>
<Label Content="=" Grid.Column="3" FontSize="45" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<TextBox Text="{Binding C}" Width="100" Height="50" Grid.Column="4" FontSize="45" />
<Button Content="Click" Grid.Row="1" Grid.Column="2" Command="{Binding CountCommand}"/>
</Grid>
public class CountClass : OnProperyChangedClass
{
int a = 5;
int b = 5;
int c;
public int A
{
get
{
return a;
}
set
{
a = value;
OnAllPropertyChanged();
}
}
public int B
{
get
{
return b;
}
set
{
b = value;
OnAllPropertyChanged();
}
}
public int C
{
get
{
return c;
}
set
{
c = value;
OnAllPropertyChanged();
}
}
}
}
public class MainViewModel : OnProperyChangedClass
{
CountClass allCountClass = new CountClass();
public CountClass AllCountClass
{
get
{
return allCountClass;
}
set
{
allCountClass = value;
OnAllPropertyChanged();
}
}
ICommand countCommand;
public ICommand CountCommand
{
get
{
return countCommand ?? (countCommand = new RelayCommand(Multiply));
}
}
private void Multiply(object obj)
{
allCountClass.C = allCountClass.B * allCountClass.C;
}
}
}
//Базовый класс с реализацией INPC
public class OnProperyChangedClass : INotifyPropertyChanged
{
//Событие для извещения об изменении
public event PropertyChangedEventHandler PropertyChanged;
//Методы вызова события извещения об изменении свойства
public void OnPropertyChanged([CallerMemberName]string prop = "")
{
string[] names = prop.Split("\\/\r \n()\"\'-".ToArray(), StringSplitOptions.RemoveEmptyEntries);
switch (names.Length)
{
case 0: break;
case 1:
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(prop));
break;
default:
OnPropertyChanged(names);
break;
}
}
///Метод для вызова события извещения об изменении списка свойств
///Список имен свойств
public void OnPropertyChanged(IEnumerable<string> propList)
{
foreach (string prop in propList.Where(name => !string.IsNullOrWhiteSpace(name)))
OnPropertyChanged(prop);
}
///Метод для вызова события извещения об изменении всех свойств
///name = propList Список свойств
public void OnPropertyChanged(IEnumerable<PropertyInfo> propList)
{
foreach (PropertyInfo prop in propList)
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(prop.Name));
}
public void OnAllPropertyChanged()
{
OnPropertyChanged(GetType().GetProperties());
}
///Методы Set для установки значения свойств
///Виртуальный метод изменения пля связанного со свойством значимого типа
///fieldProperty ссылка на поле значения свойства
///nameValue Новое значение
///nameProperty Названи свойства
public virtual void SetPropety<T>(ref T fieldProperty, T newValue, [CallerMemberName]string nameProperty = "") where T : IComparable<T>
{
if ((fieldProperty != null && fieldProperty.CompareTo(newValue) != 0 || (fieldProperty == null && newValue != null)))
{
fieldProperty = newValue;
OnPropertyChanged(nameProperty);
}
}
///Виртуальный метод изменяющий значение поля связанного со свойством ссылочного типа
///fieldProperty ссылка на поле значения свойства
///nameValue Новое значение
///nameProperty Названи свойства
public virtual void SetProperty<T, U>(T fieldProperty, U newValue, [CallerMemberName]string nameProperty = "") where T : class where U : class, T
{
if (fieldProperty != newValue)
{
fieldProperty = newValue;
OnPropertyChanged(nameProperty);
}
}
}
}
public class RelayCommand : ICommand
{
private Action<object> execute;
private Func<object, bool> canExecute;
public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
public RelayCommand(Action<object> execute, Func<object, bool> canExecute = null)
{
this.execute = execute;
this.canExecute = canExecute;
}
public bool CanExecute(object parameter)
{
return this.canExecute == null || this.canExecute(parameter);
}
public void Execute(object parameter)
{
this.execute(parameter);
}
}
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Подскажите бесплатные библиотеки, для декодирования полученных из Pdf изображенийИспользую iTextSharp
Стоит задача записи аудио файла в формате LPCM (без WAV-заголовка)Подскажите, какой библиотекой можно воспользоваться для формирования аудио-файла...
Возможно ли создать два MongoClient с разной логикой сериализации? Например, нам необходимо писать один и тот же тип данных в разные коллекции...