15

新しい Silverlight プロジェクトで Caliburn.Micro を使用しましたが、すべてうまく機能しています。組み込みの規則により、ボタンのクリック イベントがビューモデルにバインドされますが、データグリッドとコンボボックスで selectionChanged イベントを処理する最善の方法が何であるかはわかりません。

現時点では、選択したアイテムにバインドしてカスタム ロジックを呼び出していますが、これは少しコードの匂いがするので、プロパティと selectedChange イベントの設定を分離する必要があると感じています。しかし、これらを分離した場合、選択変更イベントをコマンドでviewModelにバインドするにはどうすればよいですか? またはイベントトリガー?または、以下のコードは受け入れられますか? その小さな変更ですが、私はこのロジックをどこでも行っています。

private Foo _selectedFoo;
public Foo SelectedFoo
{
    get
    {
        return _Foo;
    }
    set
    {
        if (_Foo != null && _Foo.Equals(value)) return;
        _Foo = value;
        NotifyOfPropertyChange("SelectedFoo");
        NotifyOfPropertyChange("CanRemove");
        LoadRelatedBars();
    }
}
4

2 に答える 2

22

私はこのテクニックを定期的に使用しており、とても快適に感じています。
新しい状態を設定するために外部アクター (ちなみにビューですが、別のコンポーネントである可能性もあります) を必要とせずに、VM が独自の状態の変化に反応することはまったく問題ありません。かわった。

ただし、本当に必要な場合は、Message.Attach 添付プロパティを使用して、ビューのイベントを VM のアクションにフックできます。

cal:Message.Attach="[Event SelectionChanged] = [OnSelectionChangedAction]"

( https://caliburnmicro.com/documentation/actionsも参照)

于 2010-10-28T10:30:43.703 に答える