我有一個文本框,它是綁定到一個字符串Text屬性(在視圖模型)WPF如何過濾數據綁定的元素? MVVM相關
問:我如何使它所以無論是寫在文本框是完全10個字符長(或僅用英文字母表示,只是一個例子)。
問題是直接寫入viewModel的字符串變量。所以我唯一的想法是有一個這樣的轉換器。但即使轉換器沒有任何返回,我如何通知用戶有什麼問題? (「錯誤 - 長度= 10」爲例)
我有一個文本框,它是綁定到一個字符串Text屬性(在視圖模型)WPF如何過濾數據綁定的元素? MVVM相關
問:我如何使它所以無論是寫在文本框是完全10個字符長(或僅用英文字母表示,只是一個例子)。
問題是直接寫入viewModel的字符串變量。所以我唯一的想法是有一個這樣的轉換器。但即使轉換器沒有任何返回,我如何通知用戶有什麼問題? (「錯誤 - 長度= 10」爲例)
雖然這可能會回答這個問題,[這將是更可取的](http://meta.stackexchange.com/q/8259)在這裏包括答案的基本部分,並提供鏈接供參考。 –
我推薦看看IDataErrorInfo
interface使用。 你可以讓你的viewmodel實現這個接口來定義驗證邏輯。例如:
public class ViewModel : IDataErrorInfo
{
public string MyText { get; set; }
#region IDataErrorInfo Members
public string Error
{
get { return null; }
}
public string this[string columnName]
{
get
{
if (columnName == "MyText")
{
if (MyText.Length != 10)
{
return "Text should be exactly 10 letters.";
}
}
return null;
}
}
#endregion
}
一個很好的例子和進一步的定製可以找到here。
它更有用的問題認爲是驗證而不是過濾。作爲本文答案之一,WPF提供了幾種支持形式,但IDataErrorInfo是MVVM的首選方法(請參閱Adi Lester的回答)。歡呼聲 – Berryl