Я пытаюсь вызвать функцию в viewmodel при запуске MVVM. Я думал, что это правильно, но код никогда не нажимает на вызов функции.Функция запуска вызова в viewmodel
Вот моя XAML:
<Window x:Class="TestWin.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:l="clr-namespace:Timeserver"
xmlns:viewmodel="clr-namespace:Timeserver.ViewModels"
Title="MainWindow"
Width="893"
Height="Auto"
Background="LightGray"
ResizeMode="NoResize"
SizeToContent="Height">
<Window.DataContext>
<viewmodel:MainWindowViewModel />
</Window.DataContext>
<i:Interaction.Triggers>
<i:EventTrigger EventName="Loaded">
<i:InvokeCommandAction Command="{Binding LoadData}" />
</i:EventTrigger>
</i:Interaction.Triggers>
Вот мой ViewModel (необходимые части):
namespace TestWin.ViewModels
{
class MainWindowViewModel
{
private StructsModel model; // my model class
private ICommand loadDataCmd;
private ICommand showTimeWindowCmd;
private ICommand toggleExecuteCommand { get; set; }
private bool canExecute = true;
public bool CanExecute
{
get
{
return this.canExecute;
}
set
{
if (this.canExecute == value)
{
return;
}
this.canExecute = value;
}
}
public ICommand ToggleExecuteCommand
{
get
{
return toggleExecuteCommand;
}
set
{
toggleExecuteCommand = value;
}
}
public ICommand ShowTimeWindowCmd
{
//code here
}
public ICommand LoadDataCmd
{
get
{
return loadDataCmd;
}
set
{
loadDataCmd = value;
}
}
public void LoadData(object parameter)
{
model.GetData();
}
public MainWindowViewModel()
{
this.model = new StructsModel();
LoadDataCmd = new RelayCommand(LoadData, param => this.canExecute);
ShowTimeWindowCmd = new RelayCommand(ShowTimeWindow, param => this.canExecute);
toggleExecuteCommand = new RelayCommand(ChangeCanExecute);
}
public void ShowTimeWindow(object parameter)
{
//code here
}
public void ChangeCanExecute(object obj)
{
canExecute = !canExecute;
}
}
}
Функция в вопросе, который не попал в LoadData()
. Он вызывает GetData()
в моем классе модели, который я не могу показать по причинам. Не уверен, что еще попробовать. Я видел другие вопросы о том, как я делаю то же самое, что и я. Моя другая функция ShowTimeWindow
настроена точно так же и попадает.
Кажется, что вы действительно не понимаете, как работает привязка данных. Я бы посоветовал вам ознакомиться с механизмом привязки данных WPF. Вы пытаетесь привязать метод, который не работает. – dymanoid
Я сделаю больше исследований, я просто смотрел на другие вопросы на этом сайте, как этот: http://stackoverflow.com/a/17933290/2480598 Думал, что могу связать команду с методом. – pfinferno
Не следует ли привязывать LoadDataCmd вместо привязки LoadData? – Steve