クラス等の仕様

MakCraft 名前空間のライブラリ仕様

 

.NET Framework で利用可能なライブラリ、MakCraft.ViewModelBase パッケージの仕様

.NET Core で利用可能なライブラリ、MakCraft.ViewModelBaseCore パッケージの仕様

TransitionViewModelBase クラス関連の仕様


TransitionViewModelBase

データ検証と画面遷移及び表示状態設定機能を持つビューモデルの基底クラス

構文

public abstract class TransitionViewModelBase : DialogViewModelBase, IWindowCloseCommand, IViewModelStatus, IReceiveFinished

プロパティ

public WindowAction DisplayMode { get; protected set; }
ウィンドウの表示状態を取得・設定します。
View 側で PropertyChangedTrigger の Binding と DisplayModeAction の DisplayMode にバインドしてください。
protected TransitionViewModelBase PreviousViewModel { get; }
前画面のビューモデルを取得します。
public override object Container {get; set; }
ウィンドウ作成元からのデータ受け取り用プロパティ
public bool CanCloseWindow { get; }
ウィンドウを閉じることが可能かを取得します。
public ViewModelStatus CurrentStatus { get; set; }
ビューモデルの処理状態を取得・設定します。

メソッド

protected virtual bool WindowCloseCanExecute(object param)
ウィンドウが閉じることの出来る状態かどうかを返します。
仮想メソッドは常に 'true' を返します。制御が必要な場合はオーバーライドしてください。
protected virtual void OnWindowClosed()
ウィンドウがクローズされた際の操作
protected virtual void TransitionComplete()
一連の画面遷移の完了を設定します。
public virtual void WindowClose()
ビューモデルからウィンドウへ Close を通知するメソッドです。
public virtual void OnFinished(ITransContainer container)
画面遷移完了時に実行する処理です。

コマンド

public ICommand WindowCloseCommand { get; }
ウィンドウを閉じるコマンド
public ICommand WindowClosedCommand { get; }
ウィンドウがクローズされた際の操作コマンド
ウィンドウの Closed イベントが発生した際に呼び出されるようにしてください。

DialogViewModelBase

データ検証とダイアログ表示の基本機能を提供するビューモデルの基底クラス

構文

public abstract class DialogViewModelBase : ValidationViewModelBase, IDialogTransferContainer

プロパティ

public object CommunicationDialog { get; protected set; }
作成する Dialog に渡すデータを取得・設定します。
View 側で DialogTransferDataAction の Parameter にバインドしてください。
public Type DialogType { get; protected set; }
表示するカスタムダイアログボックスの型の情報
View 側で DialogTransferDataAction の DialogType にバインドしてください。
public virtual object Container { get; set; }
ウィンドウ作成元から渡されたデータの受取用
public Action<bool?> DialogActionCallback { get; protected set; }
ダイアログが閉じられた後に実行するコールバックを取得・設定します。
View 側で DialogTransferDataAction の ActionCallBack にバインドしてください。
public object ResultViewModel { get; set; }
ダイアログ表示で生成されたダイアログのビューモデルへの参照を取得・設定します。
(ダイアログで設定された値の参照用)
View 側で DialogTransferDataAction の ResultViewModel にバインドしてください。
public MessageDialogActionParameter MessageDialogActionParam { get; set; }
MessageDialogActionに渡すパラメーター
View 側で PropertyChangedTrigger の Binding と MessageDialogAction の Parameter にバインドしてください。
public Action<MessageBoxResult> MessageDialogActionCallback { get; set; }
MessageDialogActionの実行後に呼ばれるCallBack
View 側で MessageDialogAction の ActionCallBack にバインドしてください。

メソッド

protected virtual void OnContainerReceived(object container)
ウィンドウ作成元からのデータを受け取った際に行う処理

ModalViewModelBase

データ検証とモーダルダイアログ表示機能を持つビューモデルの基底クラス

構文

public abstract class ModalViewModelBase : DialogViewModelBase

プロパティ

public bool? Result { get; set; }
View 側の DialogResult セット用の PropertyChangedTrigger へバインドします。
View 側で PropertyChangedTrigger の Binding と ChangePropertyAction の Value にバインドしてください。

メソッド

protected virtual void OkExecute()
モーダルダイアログの OK ボタンクリック時の処理
仮想メソッドは Window の DialogResult プロパティに true をセットする動作のみです。制御が必要な場合はオーバーライドしてください。
protected virtual bool OkCanExecute(object param)
OkCommand の 有効/無効 を返します。
データ検証エラーの有無を返します。データ検証エラーを用いないで判断したい場合はオーバーライドしてください。

コマンド

public ICommand OkCommand { get; }
OK ボタン用のコマンドです。
ボタンの有効・無効をコントロールするため、コマンドで Window の DialogResult を設定します。

TransitionContainerBase

画面遷移の際のデータコンテナの基底クラス

構文

public class TransitionContainerBase : ITransContainer

コンストラクタ

public TransitionContainerBase(string key, TransitionViewModelBase viewModel)
画面遷移のキー及び遷移開始元ビューモデルを設定して画面遷移の際のデータコンテナを作成します。

プロパティ

public string Key { get; }
遷移を区別するためのキーを取得します。
public TransitionViewModelBase TransStartViewModel { get; }
遷移動作の開始元ビューモデルを取得します。
public TransitionViewModelBase PreviousViewModel { get; set; }
前画面のビューモデルを取得・設定します。

ITransContainer

画面遷移の際のデータコンテナのインターフェイス

構文

public interface ITransContainer

プロパティ

string Key { get; }
遷移を区別するためのキーを取得します。
TransitionViewModelBase TransStartViewModel { get; }
遷移動作の開始元ビューモデルを取得します。
TransitionViewModelBase PreviousViewModel { get; set; }
前画面のビューモデルを取得・設定します。

ViewModelUtility

ViewModel 関連のユーティリティクラス

構文

public static class ViewModelUtility

メソッド

public static ViewModelBase GetMainWindowViewModel()
MainWindow となっている Window の ViewModel を返します。
public static int Count(Type type)
指定されたビューモデルのインスタンスの数を返します。
public static IReadOnlyList<ViewModelBase> GetViewModels(Type type)
指定されたビューモデルのインスタンスの一覧を返します。
public static void CloseViewModels(Type type)
指定されたビューモデルのインスタンスの IWindowCloseCommand インターフェイス のWindowClose メソッドを実行します。
public static bool IsReadyCloseAllWindows
すべてのウィンドウが閉じることが可能か確認します。

DialogTransferDataAction

データを渡してモードレス ダイアログ ウィンドウを表示するアクション
ダイアログ側のビューモデルにデータ受取り用の「public object Container」プロパティが必要

構文

public class DialogTransferDataAction : TriggerAction<FrameworkElement>

プロパティ

public object Parameter { get; set; }
ダイアログウィンドウに渡すデータを格納
public Type DialogType { get; set; }
表示するダイアログのクラス名
public DialogModes DialogMode { get; set; }
ダイアログの表示種別
public Action<bool?> ActionCallBack { get; set; }
ダイアログを閉じた際に実行するコールバック
public object ResultViewModel { get; set; }
作成したウィンドウのビューモデルオブジェクトへの参照
ダイアログ側で設定したデータの参照用

DialogModes

ダイアログの表示種別

構文

public enum DialogModes

メンバー

Modal
モーダル ダイアログとして表示する。
Modeless
モードレス ダイアログとして表示する。

DisplayModeAction

モードレス ウィンドウの表示変更アクション

構文

public class DisplayModeAction : TriggerAction<FrameworkElement>

プロパティ

public WindowAction DisplayMode { get; set; }
変更する表示状態

ViewModelStatus

画面遷移を行うビューモデルの処理状況を表す列挙型です。

構文

public enum ViewModelStatus
Completed
完了
Halfway
未完了

WindowAction

画面遷移を行うビューモデルへセットするウィンドウの状態を表す列挙型です。

構文

public enum WindowAction

メンバー

Show
表示する
Hide
非表示にする
Close
閉じる

MessageDialogAction

MessageBox を表示するアクション

構文

public class MessageDialogAction : TriggerAction<FrameworkElement>

プロパティ

public IMessageDialogActionParameter Parameter { get; set; }
メッセージボックスやダイアログを出すために必要となる情報を受け取る
public Action<MessageBoxResult> ActionCallBack
ダイアログでの選択結果をViewModelに通知するコールバックメソッド

MessageDialogActionParameter

MessageDialogAction へ渡すパラメーター
IsDialog が false のときには Button の設定は反映されません。

構文

public class MessageDialogActionParameter : IMessageDialogActionParameter

コンストラクタ

public MessageDialogActionParameter(string message, string caption) : this(message, caption, MessageBoxButton.OK, false)
public MessageDialogActionParameter(string message, string caption, MessageBoxButton button) : this(message, caption, button, true)
public MessageDialogActionParameter(string message, string caption, MessageBoxButton button, bool isDialog)

プロパティ

public string Message { get; protected set; }
MessageBoxに表示するメッセージ
public string Caption { get; protected set; }
MessageBox に表示するタイトル
public MessageBoxButton Button { get; protected set; }
MessageBox に表示するボタン
public bool IsDialog { get; protected set; }
true:ダイアログ(ユーザ応答を処理する)、false:メッセージ

EventCommandAction

イベント発生時にコマンドを実行するアクション
実行するコマンドの引数に発生したイベントの EventArgs を設定します。

構文

public class EventCommandAction : TriggerAction<UIElement>

プロパティ

public ICommand Command { get; set; }
呼び出すコマンドを取得または設定します。

IDialogTransferContainer

生成元ウィンドウからのデータの受取用プロパティのインターフェイス

構文

public interface IDialogTransferContainer

プロパティ

object Container { get; set; }
生成元ウィンドウからのデータの受取用プロパティ

IMessageDialogActionParameter

MessageDialogAction へ渡すパラメーターのインターフェイス
IsDialog が false のときには Button の設定は反映されません。

構文

public interface IMessageDialogActionParameter

プロパティ

string Message { get; }
MessageBoxに表示するメッセージ
string Caption { get; }
MessageBox に表示するタイトル
MessageBoxButton Button { get; }
MessageBox に表示するボタン
bool IsDialog { get; }
true:ダイアログ(ユーザ応答を処理する)、false:メッセージ

IReceiveFinished

画面遷移完了時の操作に用いるインターフェイスです。

構文

interface IReceiveFinished

メソッド

void OnFinished(ITransContainer container)
画面遷移操作完了時に実行されるメソッド

ITransContainer

画面遷移の際のデータコンテナのインターフェイス

構文

public interface ITransContainer

プロパティ

string Key { get; }
遷移を区別するためのキーを取得します。
一つのビューモデルで複数の画面遷移を持つ場合の処理の分岐用
TransitionViewModelBase TransStartViewModel { get; }
遷移動作の開始元ビューモデルを取得します。
TransitionViewModelBase PreviousViewModel { get; set; }
前画面のビューモデルを取得・設定します。

IViewModelStatus

画面遷移を行うビューモデルの処理状況のプロパティのインターフェイス

構文

public interface IViewModelStatus

プロパティ

ViewModelStatus CurrentStatus { get; set; }
画面遷移を行うビューモデルの処理状況

IWindowCloseCommand

ウィンドウを閉じるためのビューモデルのインターフェイスです。

構文

public interface IWindowCloseCommand

プロパティ

bool CanCloseWindow { get; }
ウィンドウがクローズできる状態かを返します。

メソッド

void WindowClose()
ビューモデルからウィンドウへ Close を通知するメソッドです。

 

ValidationViewModelBase クラス関連の仕様


ValidationViewModelBase

プロパティ変更通知及びデータ検証を実装したビューモデルの基底クラス

構文

public abstract class ValidationViewModelBase : WeakEventViewModelBase, IDataErrorInfo

プロパティ

public bool IsValid
データ検証エラーの発生の有無を取得します。
public ValidationDictionary ViewModelState
ビューモデルの状態及びバインディングの検証の状態を格納するビューモデル状態ディクショナリ オブジェクトを取得します。

メソッド

public void RemoveItemValidationError<T>(Expression<Func<T>> propertyName)
propertyName に設定されている検証エラーメッセージを削除します。
PropertyHelper.GetName<T>(Expression<Func<T>> e) を用いてプロパティ名を取り出します。
public void RemoveItemValidationError([CallerMemberName] string propertyName = null)
propertyName に設定されている検証エラーメッセージを削除します。
propertyName が省略された場合、呼び出し元のメソッドまたはプロパティの名前を用います。
public bool IsPropertyAnnotationError<T>(Expression<Func<T>> propertyName)
指定されたプロパティの System.ComponentModel.DataAnnotations のデータ検証アトリビュート検査の結果を確認します。
PropertyHelper.GetName<T>(Expression<Func<T>> e) を用いてプロパティ名を取り出します。
public bool IsPropertyAnnotationError([CallerMemberName] string propertyName = null)
指定されたプロパティの System.ComponentModel.DataAnnotations のデータ検証アトリビュート検査の結果を確認します。
propertyName が省略された場合、呼び出し元のメソッドまたはプロパティの名前を用います。
protected void RaisePropertyChangedWithRemoveItemValidationError<T>(Expression<Func<T>> e)
PropertyChanged イベントを発火します。
プロパティ変更通知まえに当該プロパティの検証エラーの削除を行います。
PropertyHelper.GetName<T>(Expression<Func<T>> e) を用いてプロパティ名を取り出します。
protected virtual void RaisePropertyChangedWithRemoveItemValidationError([CallerMemberName] string propertyName = null)
PropertyChanged イベントを発火します。
プロパティ変更通知まえに当該プロパティの検証エラーの削除を行います。
propertyName が省略された場合、呼び出し元のメソッドまたはプロパティの名前を用います。
protected void SetPropertyWithRemoveItemValidationError<T>(ref T property, T value, [CallerMemberName] string propertyName = null)
プロパティ名 property を value の値で書き換え、PropertyChanged イベントを発火します。
プロパティ変更通知まえに当該プロパティの検証エラーの削除を行います。
propertyName が省略された場合、呼び出し元のメソッドまたはプロパティの名前を用います。

ValidationDictionary

データ検証に用いるディクショナリ

構文

class ValidationDictionary : IValidationDictionary

プロパティ

bool IsValid { get; }
データ検証エラーの発生の有無を取得する。

メソッド

void AddError(string key, string errorMessage)
データ検証エラーメッセージを追加する。
public void RemoveErrorByKey(string propertyName)
propertyName に設定されているエラーメッセージを削除します。
public string GetValidationError(string propertyName)
propertyName に対するエラーメッセージを返します。エラーがない場合は null を返します。
IEnumerator<KeyValuePair<string, ModelState>> GetEnumerator()
コレクションを反復処理するために使用できる列挙子を返します。

ValidateConditionalAttribute

データ検証を行う条件を指定します。

構文

[AttributeUsage(AttributeTargets.Property)]
public class ValidateConditionalAttribute : Attribute

コンストラクタ

public ValidateConditionalAttribute(string comparedProperty, object value)

プロパティ

public string ComparedProperty
条件の比較対象となるプロパティ名を取得します。
public object Value
条件となる値を取得します。

IValidationDictionary

データ検証のインターフェイス

構文

public interface IValidationDictionary

プロパティ

bool IsValid { get; }
データ検証エラーの発生の有無を取得する。

メソッド

void AddError(string key, string errorMessage)
データ検証エラーメッセージを追加する。
void RemoveErrorByKey(string propertyName)
propertyName に設定されているエラーメッセージを削除します。
IEnumerator<KeyValuePair<string, ModelState>> GetEnumerator()
コレクションを反復処理するために使用できる列挙子を返します。

WeakEventViewModelBase クラス関連の仕様


WeakEventViewModelBase

弱いイベントパターンを用いたリスナー登録機能を持つビューモデルベースです。

構文

public abstract class WeakEventViewModelBase : ViewModelBase

メソッド

public void AddListener(INotifyPropertyChanged notifyObject, IWeakEventListener weakEventListener)
PropertyChangedEventManager へ弱いイベントのリスナーを登録します。
public void RemoveListener(INotifyPropertyChanged notifyObject, IWeakEventListener weakEventListener)
PropertyChangedEventManager から弱いイベントのリスナーを削除します。
(明示的に削除を行わなくてもメモリーリークは発生しません)

PropertyChangedWeakEventListener

弱いイベントパターンのリスナです。

構文

public class PropertyChangedWeakEventListener : IPropertyChangedWeakEventListener

メソッド

public bool ReceiveWeakEvent(Type managerType, object sender, EventArgs e)
イベント マネージャーからイベントを受信します。

イベント

public event PropertyChangedEventHandler WeakPropertyChanged
弱いイベントパターンを用いたプロパティ変更通知のイベントハンドラ

IPropertyChangedWeakEventListener

弱いイベントパターンを用いたプロパティ変更通知のイベントハンドラを持つ WeakEventListner のインターフェイス

構文

public interface IPropertyChangedWeakEventListener : IWeakEventListener, INotifyWeakPropertyChanged

INotifyWeakPropertyChanged

弱いイベントパターンを用いたプロパティ変更通知のイベントハンドラを持つ NotifyWeakPropertyChanged のインターフェイス。

構文

public interface INotifyWeakPropertyChanged

イベント

event PropertyChangedEventHandler WeakPropertyChanged
弱いイベントパターンを用いたプロパティ変更通知のイベントハンドラ

ViewModelBase クラス関連の仕様


ViewModelBase

プロパティ変更通知を実装したビューモデルの基底クラス

構文

public abstract class ViewModelBase : NotifyObject, IDisposable

メソッド

protected bool IsUiThread()
UI スレッドからのアクセスかどうかを判定する
protected override void RaisePropertyChanged([CallerMemberName] string propertyName = null)
PropertyChanged イベントを発火します(呼び出し元のスレッドが UI スレッドでない場合には、UI スレッドにて実行を行います)。
propertyName が省略された場合、呼び出し元のメソッドまたはプロパティの名前を用います。
protected void InvalidateRequerySuggested()
CommandManager.RequerySuggested イベントを強制的に発火させます(呼び出し元のスレッドが UI スレッドでない場合には、UI スレッドにて実行を行います)。
public void Dispose()
リソースの開放を行います。
protected virtual void Dispose(bool disposing)
リソースの開放を行います。

NotifyObject

プロパティ変更通知を実装した基底クラス

構文

public abstract class NotifyObject : INotifyPropertyChanged

プロパティ

protected Dispatcher UiDispatcher { get; }
UI スレッドのディスパッチャ

メソッド

protected void SetProperty<T>(ref T property, T value, [CallerMemberName] string propertyName = null)
プロパティ名 property を value の値で書き換え、PropertyChanged イベントを発火します。
protected void RaisePropertyChanged<T>(Expression<Func<T>> e)
PropertyChanged イベントを発火します(RaisePropertyChanged(string propertyName)を呼び出します)。
PropertyHelper.GetName<T>(Expression<Func<T>> e) を用いてプロパティ名を取り出します。
protected virtual void RaisePropertyChanged([CallerMemberName] string propertyName = null)
PropertyChanged イベントを発火します。
propertyName が省略された場合、呼び出し元のメソッドまたはプロパティの名前を用います。

イベント

public event PropertyChangedEventHandler PropertyChanged
PropertyChanged イベント処理用のデリゲート

PropertyHelper

構文

public interface IValidationDictionary

メソッド

public static string GetName<T>(Expression<Func<T>> e)
引数で渡されたプロパティから当該プロパティの名前を返します。