我在xaml中有一个textBox
但导航到其他页面时我收到此消息
在输入,聚焦和失去焦点时动态监视textBox
(检测是否包含文本并更改文本颜色。)
一切正常,我不知道例外是做什么的。
这是textBox xaml
<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().
如何摆脱它?
答案 0 :(得分:1)
您正尝试使用双向绑定绑定本地化资源中的文本。它无法工作,因为这些资源是只读的。
我相信你只是想设置文本框的初始值。因此,您应该绑定到您自己的属性,并使用资源对其进行初始化。
首先,在viewmodel中创建属性:
public string SearchBoxColorText { get; set; }
在代码中的某处初始化属性(在类构造函数中,在OnNavigatedTo
事件中,无论适合您的工作流程):
this.SearchBoxColorText = LocalizedStrings.StaticlocalizedResources.Desc_InputKey;
然后将文本框绑定到此属性:
<TextBox Name="SearchBox" Text="{Binding SearchBoxColorText}" >