トップ回答者
添付プロパティがnullになってしまう

質問
-
ビヘイビアの添付プロパティを利用してViewModelの情報を取得しようとしているのですが、nullとなってしまいます。
具体的には、Main画面の閉じるボタンを押下した際にログイン情報を取得したいのですが、LoginInfoがnullとなります。
■MainView.xaml
<i:Interaction.Behaviors> <behavior:CloseWindowBehavior LoginInfo = "{Binding LoginViewModel}"/> </i:Interaction.Behaviors>
■CloseWindowBehavior.cs
/// <summary> /// LoginInfo添付プロパティ /// </summary> public static readonly DependencyProperty LoginInfoProperty = DependencyProperty.Register("LoginInfo", typeof(LoginViewModel), typeof(CloseWindowBehavior), new FrameworkPropertyMetadata(null)); /// <summary> /// ログイン情報 /// </summary> public LoginViewModel LoginInfo { get { return (LoginViewModel)GetValue(LoginInfoProperty); } set { SetValue(LoginInfoProperty, value); } }
回答
-
再現しないですね。
set { SetValue(LoginInfoProperty, value); }
の箇所にブレークポイントを設定しておいてブレークするか確かめたらどうなります?
全くブレークしないならバインディングがそもそもできてない可能性が高いです。
たぶんビヘイビアを登録した対象のDataContextがnullか、LoginInfoへのバインディングのパスが間違ってるのどちらかだと思われます。#DependencyProperty.Registerで登録したのは添付プロパティではなく通常の依存関係プロパティです
個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)
- 回答としてマーク Rito00279 2020年7月29日 1:00
すべての返信
-
再現しないですね。
set { SetValue(LoginInfoProperty, value); }
の箇所にブレークポイントを設定しておいてブレークするか確かめたらどうなります?
全くブレークしないならバインディングがそもそもできてない可能性が高いです。
たぶんビヘイビアを登録した対象のDataContextがnullか、LoginInfoへのバインディングのパスが間違ってるのどちらかだと思われます。#DependencyProperty.Registerで登録したのは添付プロパティではなく通常の依存関係プロパティです
個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)
- 回答としてマーク Rito00279 2020年7月29日 1:00