Флажок WPF в сетке данных не запускает команду ретрансляции в модели представления ⇐ C#
-
Anonymous
Флажок WPF в сетке данных не запускает команду ретрансляции в модели представления
У меня есть сетка данных внутри элемента табуляции, в которой есть столбец «Шаблон данных флажка». Данные привязаны к наблюдаемой коллекции, содержащей столбец CheckboxChecked внутри класса. Когда этот элемент изменяется в классе и отображается в привязке, INotifyPropertyChanged срабатывает правильно.
Однако я пытаюсь запустить событие, подобное этому событию Binding Checkbox Click. внутри ItemsControl для просмотра модели
Я прочитал так много статей и попробовал множество решений, что не уверен, какая часть моего кода вызывает проблему.Позволь мне знаете, есть ли что-нибудь еще, что нужно знать?
Это XAML для TabItem
Это ресурсы Windows
Это AutoDealingViewModel
namespace AutoTradingSystem_v07.ViewModel
{
public class AutoDealingViewModel : ViewModelBase
{
//This will bind to the DataGrid instead of the TestEntities
public CollectionViewSource ViewSource { get; set; }
//Notice no OnPropertyChange, just a property
private static AutoDealingViewModel instance;
public ObservableCollection EpicParams { get; set; }
public AutoDealingViewModel()
{
instance = this;
EpicParams = new ObservableCollection();
//Initialize the view source and set the source to your observable collection
this.ViewSource = new CollectionViewSource();
ViewSource.Source = EpicParams;
InitialiseViewModel();
Clicked = new RelayCommand(ExecuteClicked);
}
private void ExecuteClicked()
{
}
public ICommand Clicked { get; }
private void ExecuteClicked(object isChecked)
{
if ((bool)isChecked) { }
int I = 0;
}
public static AutoDealingViewModel getInstance()
{
return instance;
}
// Other code below
}
}
Это ViewModelBase
namespace AutoTradingSystem_v07.ViewModel
{
public abstract class ViewModelBase : INotifyPropertyChanged
{
public enum TradeSubscriptionType
{
Opu = 0,
Wou = 1,
Confirm = 2
}
public static string CurrentAccountId;
public void InitialiseViewModel()
{
SmartDispatcher smartDispatcher = (SmartDispatcher)SmartDispatcher.getInstance();
smartDispatcher.setViewModel(ApplicationViewModel.getInstance());
if (RunningEnv.RunEnvironment.Type() == "PRD")
{
_Env = "live";
}
else { _Env = "demo"; }
//Clicked = new RelayCommand(ExecuteClicked());
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
}
protected virtual void OnPropertyChanged(PropertyChangedEventArgs args)
{
var handler = PropertyChanged;
handler?.Invoke(this, args);
}
}
}
namespace AutoTradingSystem_v07.Model
{
public class EpicParamsMainModel
{
public class EpicParamsModel : INotifyPropertyChanged
{
private string _epic;
public string Epic
{
get
{
return _epic;
}
set
{
_epic = value;
OnPropertyRaised("Epic");
}
}
private bool _checkboxChecked;
public bool CheckboxChecked
{
get
{
return _checkboxChecked;
}
set
{
_checkboxChecked = value;
OnPropertyRaised("CheckboxChecked");
}
}
private String _marketState;
public String MarketState
{
get
{
return _marketState;
}
set
{
_marketState = value;
OnPropertyRaised("MarketState");
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyRaised(string propertyname)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyname));
}
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... -viewmodel
У меня есть сетка данных внутри элемента табуляции, в которой есть столбец «Шаблон данных флажка». Данные привязаны к наблюдаемой коллекции, содержащей столбец CheckboxChecked внутри класса. Когда этот элемент изменяется в классе и отображается в привязке, INotifyPropertyChanged срабатывает правильно.
Однако я пытаюсь запустить событие, подобное этому событию Binding Checkbox Click. внутри ItemsControl для просмотра модели
Я прочитал так много статей и попробовал множество решений, что не уверен, какая часть моего кода вызывает проблему.Позволь мне знаете, есть ли что-нибудь еще, что нужно знать?
Это XAML для TabItem
Это ресурсы Windows
Это AutoDealingViewModel
namespace AutoTradingSystem_v07.ViewModel
{
public class AutoDealingViewModel : ViewModelBase
{
//This will bind to the DataGrid instead of the TestEntities
public CollectionViewSource ViewSource { get; set; }
//Notice no OnPropertyChange, just a property
private static AutoDealingViewModel instance;
public ObservableCollection EpicParams { get; set; }
public AutoDealingViewModel()
{
instance = this;
EpicParams = new ObservableCollection();
//Initialize the view source and set the source to your observable collection
this.ViewSource = new CollectionViewSource();
ViewSource.Source = EpicParams;
InitialiseViewModel();
Clicked = new RelayCommand(ExecuteClicked);
}
private void ExecuteClicked()
{
}
public ICommand Clicked { get; }
private void ExecuteClicked(object isChecked)
{
if ((bool)isChecked) { }
int I = 0;
}
public static AutoDealingViewModel getInstance()
{
return instance;
}
// Other code below
}
}
Это ViewModelBase
namespace AutoTradingSystem_v07.ViewModel
{
public abstract class ViewModelBase : INotifyPropertyChanged
{
public enum TradeSubscriptionType
{
Opu = 0,
Wou = 1,
Confirm = 2
}
public static string CurrentAccountId;
public void InitialiseViewModel()
{
SmartDispatcher smartDispatcher = (SmartDispatcher)SmartDispatcher.getInstance();
smartDispatcher.setViewModel(ApplicationViewModel.getInstance());
if (RunningEnv.RunEnvironment.Type() == "PRD")
{
_Env = "live";
}
else { _Env = "demo"; }
//Clicked = new RelayCommand(ExecuteClicked());
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
}
protected virtual void OnPropertyChanged(PropertyChangedEventArgs args)
{
var handler = PropertyChanged;
handler?.Invoke(this, args);
}
}
}
namespace AutoTradingSystem_v07.Model
{
public class EpicParamsMainModel
{
public class EpicParamsModel : INotifyPropertyChanged
{
private string _epic;
public string Epic
{
get
{
return _epic;
}
set
{
_epic = value;
OnPropertyRaised("Epic");
}
}
private bool _checkboxChecked;
public bool CheckboxChecked
{
get
{
return _checkboxChecked;
}
set
{
_checkboxChecked = value;
OnPropertyRaised("CheckboxChecked");
}
}
private String _marketState;
public String MarketState
{
get
{
return _marketState;
}
set
{
_marketState = value;
OnPropertyRaised("MarketState");
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyRaised(string propertyname)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyname));
}
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... -viewmodel
Мобильная версия