Hi,
I am using MVVM to set up SfKanban. In my ViewModel, I have an ObservableCollection of KanbanModel, this is binding to the Kanban in my View. When I drag an item from one column to another I need it to trigger a method in my ViewModel.
|
…
<kanban:SfKanban x:Name="kanban"
ItemsSource="{Binding Tasks}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="CardDragEnter">
<i:InvokeCommandAction Command="{Binding CardDragEnter}"
CommandParameter="{Binding ElementName=kanban}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
…
</kanban:SfKanban> |
|
public class TaskDetails
{
private ICommand cardDragEnter;
public ICommand CardDragEnter
{
get
{
return cardDragEnter ?? (cardDragEnter = new RelayCommand(CanExecute));
}
}
public void CanExecute(object parameter)
{
//here you can invoke the view model method based on your requirement
MyMethod();
…
}
private void MyMethod()
{
}
} |
Thank you, This is very helpful. I do have one more question.
How do I get the TargetColumn or the Category of the target column for that CardDragEnter event?
|
<behaviours:Interaction.Behaviors>
<local:EventToCommandBehavior Command="{Binding DragCommand }"
Event="CardDragEnter" PassArguments="True" />
</behaviours:Interaction.Behaviors> |
|
public ActionCommand<KanbanDragEnterEventArgs> DragCommand { get; private set; }
this.DragCommand = new ActionCommand<KanbanDragEnterEventArgs>(OnCardDrag);
private void OnCardDrag (KanbanDragEnterEventArgs e)
{
var targetColumn = e.CurrentColumn;
var targetCagtegory = (e.CurrentColumn as KanbanColumn).Categories;
var selectedColumn = e.SelectedColumn;
var selectedCard = e.SelectedCard;
} |
My EventToCommandBehavior is getting an error: the type 'local:EventToCommandBehavior' was not found...
I am trying to do this with Prism, I am not sure if that is the problem.
|
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
xmlns:prism="http://prismlibrary.com/"
… <kanban:SfKanban x:Name="kanban"
ItemsSource="{Binding Tasks}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="CardDragEnter">
<prism:InvokeCommandAction Command="{Binding DragCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
… </kanban:SfKanban> |
|
public DelegateCommand<KanbanDragEnterEventArgs> DragCommand { get; private set; }
…
DragCommand = new DelegateCommand<KanbanDragEnterEventArgs>(OnCardDrag);
private void OnCardDrag(KanbanDragEnterEventArgs e)
{
var targetColumn = e.CurrentColumn;
var targetCagtegory = (e.CurrentColumn as KanbanColumn).Categories;
var selectedColumn = e.SelectedColumn;
var selectedCard = e.SelectedCard;
} |
Thank you for your time, I have found a different way to make it work. My problems have been resolved.