2017-01-21 15 views
0

状況: 私はMainView.xamlとMainViewModel.csを持っています ビューはcaliburn microを使用してviewmodelに接続されています。 バインディングは動作していますが、特別なケースでは動作しません。 私のコンストラクタのbool型のプロパティをfalseに初期化すると、バインディングはtrueに更新されません。 propをtrueに初期化すると、後でfalseまたはtrueに変更する問題はありません。BOOL変数は初期化後に偽に更新されません

XAMLファイル:

<Style x:Key="EyeXGazeAwareElement" TargetType="FrameworkElement"> 
     <Setter Property="eyeX:Behavior.GazeAware" Value="{Binding IsGazeActivated}" /> 
     <Setter Property="eyeX:Behavior.GazeAwareDelay" Value="10" /> 

...

<Grid HorizontalAlignment="Center" Style="{StaticResource EyeXGazeAwareElement}" Width="250"></Grid> 

とのViewModelで:

public bool IsGazeActivated { get; set; } 

public MainViewModel() 
    { 
     IsGazeActivated = false; 
    } 


    private void GazeActivatedChanged() 
    { 
     //this value gets changed, but not in the xaml file... 
     //but only if the initial value was set to false, otherwise it is working perfect 
     IsGazeActivated = Setting.Instance.IsGazeActivated; 
    } 

私はすでにモード=双方向を使用しようとしました、変更された覚え事トリガー、。 ..しかし何も働かなかった!

EDIT: 私は自分のプロパティを製織するためにPropertyChanged.Fodyを使用します。 したがって、PropertyChangedを手動で呼び出す必要はありません。 eyeXの値:Behavior.GazeAwareは "True"または "False"であり、bool ..とマッピングする必要があり、IsGazeActivatedをコンストラクタでfalseに初期化するときは既にマッピングされています。

答えて

1

WPFはブールが何であるかわかりません。あなたはそれを依存プロパティにしなければなりません、あるいは、あなたのVMがINotifyPropertyChangedを実装し、値が変更されたときに "IsGazeActivated"のイベントを発生させる必要があります。通常のパターンではありません:

public bool IsGazeActivated 
{ 
get { return _bIsGazeActivated; } 
set { if (value != _bIsGazeActivated) RaiseOnPropertyChanged("IsGazeActivated"); } 
} 
+0

私の質問を編集しましたが、私は今何を意味するのかはっきりしていると思います。 –

0

あなたはそのデフォルトの値はあるのでは、コンストラクタ内をIsGazeActivated初期化する必要はありません。
XamlはNormalプロパティを更新しません。これまでにINotifyPropertyChangedを適用したときには、その更新のみが適用されました。

private bool isGazeActivated; 
public bool IsGazeActivated 
{ 
get{ return isGazeActivated;} 
set 
{ 
    isGazeActivated = value; 
    NotifyPropertyChanged("IsGazeActivated"); or RaiseOnPropertyChanged("IsGazeActivated"); 
} 
} 



今、そのは、自動的に値のフォームのUIを更新します。
これはあなたの問題に役立つでしょう。

関連する問題