0

意見:


TextBox x:Name="feedback" Text="{Binding FeedbackText,Mode=TwoWay}"

ビューモデル:

public string FeedbackText
{
get
{
        return _feedbackTextProperty;
}

set
{
        _feedbackTextProperty = value;
    RaisePropertyChanged(FeedbackTextPropertyName);
}
}

バインド可能なアプリケーション バーを使用していますが、ボタンをクリックすると、FeedbackText プロパティに値がありません。プロパティを更新するために「lostfocus」が起動していないようです。

MVVM Light を使用しています。私は何かを逃しましたか?

4

2 に答える 2

0

アプリバーボタンをクリックしたときにテキストボックスにフォーカスが残っている場合、テキストボックスはフォーカス喪失イベントを発生させず、バインディングを更新しません。

はい、これはイライラする可能性があります。:(

このような状況でバインディングを強制的に更新したりBinding HelperCoding4Fun Toolsを使用したりするなど、さまざまな回避策があります。

于 2012-05-16T12:59:56.353 に答える
0

手遅れにならないことを願っています。ApplicationBarIconButton を押すと、TextBox テキストを保存する Window Phone 8 を使用して同じ問題が発生しました。この問題を修正する方法は、フォーカスされた TextBox のバインディング ソース プロパティを更新することです。次のコードでそれを行うことができます。

var focusedObject = FocusManager.GetFocusedElement() as TextBox;

if (focusedObject != null)
{
    var binding = focusedObject.GetBindingExpression(TextBox.TextProperty);

    if (binding != null)
    {
        binding.UpdateSource();
    }
}

一番!

于 2013-05-09T04:04:20.033 に答える