入力の形式が正しくない場合に、Silverlight DataGrid の既定のエラー メッセージを変更しようとしています。たとえば、数値フィールドに文字を入力します。タブを離すと、「入力の形式が正しくありません」と表示されます。これを修正する方法を見てきました。それは、カスタム エラー メッセージを使用して検証属性を設定することです。問題は、オブジェクトが RIA サービスから来ていることです。検証属性からのカスタム エラー メッセージを無視しているようです。これを公開するために何かする必要がありますか?前もって感謝します。
1790 次
3 に答える
1
エラーはプロパティではなくコントロールで発生するため、検証属性/メタデータ属性はここでは役に立ちません。int
文字列値をキャストできないため、コントロールは型 (またはその他の数値型)のセッターを呼び出すことができません。また、デフォルトのエラー メッセージを変更できることも知りたいです...
可能な回避策は、次のような数値入力のみを許可するカスタム TextBox を使用することです。
public class NumericTextBox : TextBox
{
public NumericTextBox()
{
this.KeyDown += new KeyEventHandler(NumericTextBox_KeyDown);
}
void NumericTextBox_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Back || e.Key == Key.Shift || e.Key == Key.Escape || e.Key == Key.Tab || e.Key == Key.Delete)
return;
if (e.Key < Key.D0 || e.Key > Key.D9)
{
if (e.Key < Key.NumPad0 || e.Key > Key.NumPad9)
{
e.Handled = true;
}
}
}
}
于 2011-08-31T08:36:54.577 に答える
0
機能する唯一のソリューションは次のとおりです (これはクライアント側にあります)。
public partial class MyEntity
{
public string MyField_string
{
get
{
return MyField.ToString();
}
set
{
decimal res = 0;
var b = Decimal.TryParse(value, out res);
if (!b)
throw new ArgumentException("Localized message");
else
this.MyField = Math.Round(res, 2);
}
}
partial void OnMyFieldChanged()
{
RaisePropertyChanged("MyField_string");
}
}
そして、MyField の代わりに MyField_string にバインドします。
于 2013-05-13T16:31:24.513 に答える
0
オブジェクトのメタデータが設定されていないようです。 これにより、メタデータが 自動的に作成され、注釈が Silverlight プロジェクトに取り込まれます。
于 2011-08-31T01:42:45.413 に答える