You are using an outdated browser. For a faster, safer browsing experience, upgrade for free today.
Order online or call us +62-821-2442-2332 (Whatsapp)
IDR
  • Empty!

PostSharp [MVVM]

  • Brand: PostSharp
  • Product Code: PostSharp
  • Availability: In Stock


Available Options



INotifyPropertyChanged

[NotifyPropertyChanged]
public class CustomerViewModel
{
    public CustomerModel Customer { get; set; }

    public string FullName
    {
        get
        {
            // Change in Customer, Customer.FirstName or
            // Customer.PrincipalAddress.Line1 will trigger the event.
            return string.Format("{0} {1} from {2}",
                Customer?.FirstName,
                Customer?.LastName,
                Customer?.PrincipalAddress?.FullAddress);
        }
    }
}

Get rid of 95% of the INotifyPropertyChanged boilerplate and never miss a notification again.



  • Support for composite properties and child objects

  • Consistent and reliable

  • Fully customizable

  • Integrates with other MVVM frameworks: MVVM Light and Caliburn.Micro

DOCUMENTATION

Command

[NotifyPropertyChanged]
public partial class MainWindow : Window
{
    bool isReadOnly;

    [Command]
    public ICommand SaveCommand { get; private set; }

    private void ExecuteSave()
    {
        // Details skipped.
    }

    public bool CanExecuteSave => !this.isReadOnly;
}

Stop creating a class every time you define a command.



  • Easy, based on custom attributes and naming conventions.

  • Validated at build time.

  • CanExecute property integrates with the [NotifyPropertyChanged] aspect.

DOCUMENTATION

Dependency & Attached Properties

public partial class FancyTextBlock : UserControl
{
    public FancyTextBlock()
    {
        InitializeComponent();
    }

    [DependencyProperty]
    [Required]
    public string Text { get; set; } = "Hello, world.";

    [DependencyProperty]
    public Brush FancyBorderBrush { get; set; }

    public void OnFancyBorderBrushChanged() { /* Handle changes here. */}
}

Dependency properties that still look like properties.



  • Support for composite properties and child objects.

  • Consistent and reliable.

  • Fully customizable.

  • Integrates with PostSharp code contracts.

  • Integrates with other MVVM frameworks.

DOCUMENTATION

Code Contracts

public interface IReferralService
{
    [return: Required]
    Referral CreateReferral([Required] string name, [Url] string url);
}


public class ReferralService : IReferralService
{
    public Referral CreateReferral(string name, string url)
    {
        // Contracts are automatically inherited from the interface.
    }

    [Required]
    public string ConnectionString { get; set; }
}

The most readable way to validate values at run-time.



  • Works with parameters, output parameters, return values, fields, and properties.

  • Works on interfaces and abstract methods. Automatically inherited.

  • As fast as hand-written code.

  • Customizable and localizable exception messages.

  • Integrates with the [DependencyProperty] aspect.

DOCUMENTATION

Weak Event

static class MyEventSource
{
    [WeakEvent]
    public static event EventHandler MyEvent;
}


class MyEventClient
{
    public MyEventClient()
    {
        MyEventSource.MyEvent += (sender, e) => Console.WriteLine("Oops!");

        // No need for IDisposable and handler unregistration.
    }
}

Avoid the most common source of memory leaks in .NET.



  • As simple as a custom attribute.

  • Apply to all events in your project in a single line.

DOCUMENTATION

Undo/Redo

mvvm-undo-redo

Give your users the familiar Undo/Redo experience without breaking the bank.



  • Undo/Redo any object state change.

  • Handle multiple changes as one step.

  • Expose in the UI with built-in or custom controls.

DOCUMENTATION

Tags: PostSharp, Development tool apps, .NET, PostSharp [MVVM]