3

xamlにtextBoxがあります。
しかし、他のページに移動すると、このメッセージが表示されます。
textBoxは、入力、フォーカス、フォーカス喪失時に動的に監視されます。
(テキストが含まれているかどうかを検出し、テキストの色を変更するため。)
すべてが正常に機能しているので、例外が何をするのかわかりません。

これはtextBoxxamlです

<TextBox Name="SearchBox" TextChanged="OnTextChanged" Height="72" InputScope="Search" GotFocus="OnGotFocus" KeyDown="OnKeyDown" LostFocus="OnLostFocus"
    Text="{Binding LocalizedResources.Desc_InputKey, Mode=TwoWay, Source={StaticResource LocalizedStrings}}" >
    <TextBox.Foreground>
        <SolidColorBrush x:Name="SearhBoxColor" Color="{StaticResource PhoneTextBoxReadOnlyColor}"/>
    </TextBox.Foreground>
</TextBox>

これはスローされた例外です:

System.Windows.Data Error: ConvertBack cannot convert value 'hhh' (type 'System.String'). BindingExpression: Path='LocalizedResources.Desc_InputKey' DataItem='MyProject.LocalizedStrings' (HashCode=15848707); target element is 'System.Windows.Controls.TextBox' (Name='SearchBox'); target property is 'Text' (type 'System.String')..
   System.ArgumentException: Property set method not found.
   at System.Reflection.RuntimePropertyInfo.SetValue(Object obj, Object value, BindingFlags invokeAttr, Binder binder, Object[] index, CultureInfo culture)
   at System.Reflection.RuntimePropertyInfo.SetValue(Object obj, Object value, Object[] index)
   at System.Windows.CLRPropertyListener.set_Value(Object value)
   at System.Windows.PropertyAccessPathStep.set_Value(Object value)
   at System.Windows.Data.BindingExpression.UpdateValue().

どうすればそれを取り除くことができますか?

4

1 に答える 1

1

双方向バインディングを使用して、ローカライズされたリソースからテキストをバインドしようとしています。これらのリソースは読み取り専用であるため、機能しません。

テキストボックスの初期値を設定しようとしているだけだと思います。したがって、独自のプロパティにバインドし、リソースを使用して初期化する必要があります。

まず、ビューモデルにプロパティを作成します。

public string SearchBoxColorText { get; set; }

コードのどこかでプロパティを初期化します(クラスコンストラクターで、OnNavigatedToイベントでは、ワークフローに適したものは何でも):

this.SearchBoxColorText = LocalizedStrings.StaticlocalizedResources.Desc_InputKey;

次に、テキストボックスをこのプロパティにバインドします。

<TextBox Name="SearchBox" Text="{Binding SearchBoxColorText}" >
于 2013-02-03T17:00:03.307 に答える