1

ビューでテキストボックスをプロパティにバインドする際に問題が発生しています。最後の文字を削除しようとするまで、バインディングは完全に機能します。カーソルは戻りますが、最後の文字はテキストボックスとバインド先のプロパティにまだ残っています。

<TextBox Grid.Column="0" Text="{Binding SearchText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>

そしてプロパティ自体

    public string SearchText
    {
        get { return _searchText; }
        set 
        {
            if (searchText != value)
            {
                if (value != "")
                {
                    Debug.WriteLine("Typed Value " + value);
                    searchText = value;
                }

            }
        }
    }

テキストボックスから Foo を完全に消去しようとすると、「Typed Value F」に出力されます。バックスペースを最後に押すと、カーソルは戻りますが、文字は削除されません。

どうすればこれを解決できますか?

4

3 に答える 3

0

TextBox からすべてを削除するということは、Text を string.Empty または "" に設定することを意味します。

プロパティを空に設定できないようになったため、最後の文字は常に TextBox に残ります。

if (value != "") に乗るだけです

于 2013-10-07T21:26:06.387 に答える
0

コードをもう一度見てください

if (value != "")
{
   Debug.WriteLine("Typed Value " + value);
   searchText = value;
}

value == "" searchText が割り当てられていない場合'

if (value != "")
{
   Debug.WriteLine("Typed Value " + value);      
}
searchText = value;
于 2013-10-07T21:26:22.690 に答える
0

条件ステートメントにより、新しい値が設定されなくなります。

if (value != "") //if value is NOT an empty string
{
   Debug.WriteLine("Typed Value " + value);
   searchText = value;
}

したがって、空の文字列 (つまり、最後の文字が削除された) の場合は、呼び出していないsearchText = valueため、新しい値を設定していません。あなたが示したコードをチェックインする理由がわからないので、それを削除するか、常にvalueそのブロックの外側を設定していることを確認してください。

于 2013-10-07T21:24:20.490 に答える