MVVM Support for Syncfusion Silverlight controls | Syncfusion Blogs
Live Chat Icon For mobile
Live Chat Icon
Popular Categories.NET  (174).NET Core  (29).NET MAUI  (207)Angular  (109)ASP.NET  (51)ASP.NET Core  (82)ASP.NET MVC  (89)Azure  (41)Black Friday Deal  (1)Blazor  (215)BoldSign  (14)DocIO  (24)Essential JS 2  (107)Essential Studio  (200)File Formats  (66)Flutter  (133)JavaScript  (221)Microsoft  (119)PDF  (81)Python  (1)React  (100)Streamlit  (1)Succinctly series  (131)Syncfusion  (915)TypeScript  (33)Uno Platform  (3)UWP  (4)Vue  (45)Webinar  (51)Windows Forms  (61)WinUI  (68)WPF  (159)Xamarin  (161)XlsIO  (36)Other CategoriesBarcode  (5)BI  (29)Bold BI  (8)Bold Reports  (2)Build conference  (8)Business intelligence  (55)Button  (4)C#  (147)Chart  (131)Cloud  (15)Company  (443)Dashboard  (8)Data Science  (3)Data Validation  (8)DataGrid  (63)Development  (628)Doc  (8)DockingManager  (1)eBook  (99)Enterprise  (22)Entity Framework  (5)Essential Tools  (14)Excel  (40)Extensions  (22)File Manager  (7)Gantt  (18)Gauge  (12)Git  (5)Grid  (31)HTML  (13)Installer  (2)Knockout  (2)Language  (1)LINQPad  (1)Linux  (2)M-Commerce  (1)Metro Studio  (11)Mobile  (507)Mobile MVC  (9)OLAP server  (1)Open source  (1)Orubase  (12)Partners  (21)PDF viewer  (43)Performance  (12)PHP  (2)PivotGrid  (4)Predictive Analytics  (6)Report Server  (3)Reporting  (10)Reporting / Back Office  (11)Rich Text Editor  (12)Road Map  (12)Scheduler  (52)Security  (3)SfDataGrid  (9)Silverlight  (21)Sneak Peek  (31)Solution Services  (4)Spreadsheet  (11)SQL  (10)Stock Chart  (1)Surface  (4)Tablets  (5)Theme  (12)Tips and Tricks  (112)UI  (387)Uncategorized  (68)Unix  (2)User interface  (68)Visual State Manager  (2)Visual Studio  (31)Visual Studio Code  (19)Web  (592)What's new  (332)Windows 8  (19)Windows App  (2)Windows Phone  (15)Windows Phone 7  (9)WinRT  (26)

MVVM Support for Syncfusion Silverlight controls

Introduction

Model-View-ViewModel (MVVM) is a pattern Microsoft strongly suggests you use with Silverlight or WPF applications. The main intention of this pattern is to split your application development model into designer and developer parts. In order to satisfy the MVVM pattern, our Syncfusion controls support MS Blend, command binding, and data binding. All of our Syncfusion Silverlight controls satisfy these needs in Essential Studio 2010 Volume 3. However, I am not going into detail about blendability in this post. I will just talk about leveraging command-binding support with Syncfusion controls.

MVVMSupport

Most of the Syncfusion Silverlight controls support command binding to make life easier for developers, who can have their user-defined logics and custom commands in the view model.

The following code explains a typical view model for the ribbon control.

ViewModel

Create a new ViewModel class named SyncfusionViewModel, which contains Ribbon control (View), Rich Textbox Editor (view) and Command properties to connect the view with the model. SyncfusionViewModel is used as DataContext for the main view.

Silverlight doesn’t have built-in delegate commands, so we need to created delegate commands. Here, this is named RibbonCommand.

public class RibbonCommand : ICommand
{
public event EventHandler CanExecuteChanged;

readonly Predicate<Object> _canExecute = null;
readonly Action<Object> _executeAction = null;

public RibbonCommand(Action<object> executeAction, Predicate<Object> canExecute)
{
_executeAction = executeAction;
_canExecute = canExecute;
}

public RibbonCommand(Action<object> executeAction)
: this(executeAction, null)
{
_executeAction = executeAction;
}

public void UpdateCanExecute()
{
if (CanExecuteChanged != null)
CanExecuteChanged(this, new EventArgs());
}

public bool CanExecute(object parameter)
{
return _canExecute == null || _canExecute(parameter);
}

public void Execute(object parameter)
{
if (_executeAction != null)
_executeAction(parameter);
UpdateCanExecute();
}
}

For the sample ribbon control application, there are three RibbonCommands (Cut, Copy, and Paste) created and bound with the view (ribbon control).

public class SyncfusionViewModel
{
    public SyncfusionViewModel()
    { 
    }
    RibbonControl myRibbon = new RibbonControl();
    public RibbonControl MyRibbon
    { 
        get 
        {
            return myRibbon; 
        } 
    }

    RibbonEditor editor = new RibbonEditor();
    public RibbonEditor Editor
    {
        get 
        {
            return editor; 
        } 
    }

    RibbonCommand cut;
    public RibbonCommand Cut
    {
        get
        {
            if (cut == null)
            {
                cut = new RibbonCommand(param => OnCutExecute());
            }
            return cut;
        }
    }

    RibbonCommand copy;
    public RibbonCommand Copy
    {
        get
        {
            if (copy == null)
            {
                copy = new RibbonCommand(param => OnCopyExecute());
            }
            return copy;
        }
    } 

    RibbonCommand paste;
    public RibbonCommand Paste
    {
        get
        {
            if (paste == null)
            {
                paste = new RibbonCommand(param => OnPasteExecute(), param => OnPasteCanExecute());
            }
            return paste;
        }
    }

    public void OnCutExecute()
    {
        if (Editor != null)
        {
            Clipboard.SetText(Editor.Selection.Text);
            MessageBox.Show("Cut Command Executing For" + "\n \"" + Editor.Selection.Text + "\"");
            Editor.Selection.Text = "";
        }
    }

    public void OnCopyExecute()
    {
        if (Editor != null)
        {
            Clipboard.SetText(Editor.Selection.Text);
        }
    }

    public void OnPasteExecute()
    {
        if (Editor != null)
        {
            Editor.Selection.Text = Clipboard.GetText();
            MessageBox.Show("Paste Command Executing For" + "\n \"" + Clipboard.GetText() + "\"");
        }
    }

    public bool OnPasteCanExecute()
    {
        return Clipboard.ContainsText();
    }
}
View

Here, the ribbon control and rich-text box are two views connected by SyncfusionViewModel.
clip_image002

Command Executing

The Cut command will be executed whenever an end-user clicks on the Cut button.

clip_image004

The Paste command will be executed whenever an end-user clicks on the Paste button.

clip_image006

Conclusion

I have explained only the Ribbon Button control above. In a similar way, all of our Syncfusion Silverlight controls support command binding, which enables your application to satisfy the clean MVVM pattern. Please free to provide a comment about this feature here. We are glad to hear valuable suggestions from you.

Tags:

Share this post:

Popular Now

Be the first to get updates

Subscribe RSS feed