Я изучаю UWP с MVVM с Призмой.Я хотел вызвать метод из моей ViewModel с помощью флажка.Вот ViewModel.
public class MainViewModel : ViewModelBase
{
public MainViewModel()
{
}
public async Task DoSomething()
{
await Task.Delay(5000);
}
}
Я надеялся вызвать этот метод непосредственно из xaml, например:
<Grid>
<CheckBox x:Name="chkBox" Checked="{x:Bind ViewModel.DoSomething,Mode=TwoWay}" Content="Click me!"
HorizontalAlignment="Left" Margin="118,90,0,0" VerticalAlignment="Top" ></CheckBox>
</Grid>
Когда я запускаю приложение, я получаю ошибку:
Error TwoWay binding target 'Checked' must be a dependency property
Что это значит?
Должен ли я привязать свойство IsChecked к ViewModel и вызвать событие?:
public class MainViewModel : ViewModelBase
{
private bool _isChecked;
event EventHandler checkedEvent;
public bool isChecked
{
get { return _isChecked; }
set
{
SetProperty(ref _isChecked, value);
checkedEvent?.Invoke(this, new EventArgs());
}
}
public MainViewModel()
{
checkedEvent += MainViewModel_checkedEvent;
}
private async void MainViewModel_checkedEvent(object sender, EventArgs e)
{
await DoSomething();
}
public async Task DoSomething()
{
await Task.Delay(5000);
}
}
Xaml:
<Grid>
<CheckBox x:Name="chkBox" IsChecked="{x:Bind ViewModel.isChecked,Mode=TwoWay}" Content="Click me!" HorizontalAlignment="Left" Margin="118,90,0,0" VerticalAlignment="Top" ></CheckBox>
</Grid>