0

MVVM と Silverlight は初めてです

サンプルの Silverlight アプリケーションを起動して実行することができました

テーブルの内容を返します - tblClip をモデル (Entity Framework) と関連オブジェクトの Clip に入れます。

これで、クリップにサイズというフィールドができました。これは、5倍に増やしたい整数です

これを行い、パターンを維持するための正しいアプローチは何ですか?

1) ModifiedSize などの新しいプロパティをモデルに追加して設定します (場所はわかりませんが) クライアントに戻すには、DataMember として装飾する必要があると思います 2) ビュー モデルで、取得したらサービス エージェントからのデータは、クリップを通過してサイズを大きくします 3) 他に何か...?

オブジェクトをデータベースに保存する必要はありません。

ポール

4

1 に答える 1

1

UI 固有のプロパティは ViewModel に属します。たとえば、これはあなたがそれを行うことができる1つの方法です

public class ClipViewModel
{
    private int _size;

    public int Size
    {
        get { return _size; }
        set
        {
            _size = value;
            NotifyPropertyChanged("Size");
        }
    }

    public int ModifiedSize
    {
        get { return Size * 5; }
        set
        {
            Size = value / 5;
        }
    }
}

ModifiedSizeXAML にバインドすると、通知が更新されるだけでなく、通知Sizeも実行されます。INotifyPropertyChanged

他にできることは、ModifiedSizeプロパティをスキップしてコンバーターを使用することです

public class ModifiedSizeConverter : IValueConverter
{
    public object Convert(object value, Type targetType, 
        object parameter, CultureInfo culture)
    {
        return (int)value * 5;
    }

    public object ConvertBack(object value, Type targetType, 
        object parameter, CultureInfo culture)
    {
        return (int)value / 5;
    }
}

Size次に、コンバーターでバインドします

<Slider Value="{Binding Path=Size, Converter={StaticResource modifiedSizeConverter}}" />
于 2012-06-09T19:18:55.327 に答える