我創建一個定製控制,在XAML調用時可設定爲僅允許特定類型的輸入:在WPF限制輸入
<lib:CustomControl RestrictTo="UnsignedIntegersOnly" ... ></CustomControl>
凡UnsignedIntegersOnly是包含組枚舉的一部分允許的限制。
如果用戶輸入了不允許的內容,控件會拋出一個驗證錯誤,並且不允許他繼續下一個表單/頁面等。
我的願景是,在構成此控件的底層文本框中,將其文本字段綁定到驗證規則,該規則將作爲輸入傳遞給CustomControl XAML聲明中指定的RestrictTo值。然後在該ValidationRule類中,處理RestrictTo特定驗證並返回驗證是否成功。
這是我不太確定如何繼續。是否有可能以這種看似動態的方式將參數傳遞給ValidationRule?我正在設置一個屬性RestrictTo,並將其傳遞給它的驗證。
如果可能,它將如何完成?我應該使用什麼樣的綁定或資源鏈接?
我最大的問題是,我下面關注結構非常嚴格分離。我不想在控件的代碼隱藏中有任何驗證邏輯。我希望它通過綁定進行無縫集成。根據我的經驗,保持非常高的模塊性和分離性使維護代碼非常容易。很多時候我必須修改代碼,這些代碼非常非常耦合,並且需要一直進行小的修改。 我喜歡這個Masked TextBox,但不幸的是我不能使用像這樣的任何第三方軟件包(策略)。 –
關於字段,它們是一個字符串或一個數字,因此每個類型和每個控件應該有一個驗證規則。如果它比這更復雜,也許你可以創建多個控件而不是一個。您可以通過僅使用有效值的ListBox或ComboBox來限制用戶。您是否嘗試了我在http://programmers.stackexchange.com/questions/203590/is-there-an-effective-way-for-creating-complex-forms?答案中解釋的模式?另外,我建議你編輯你的問題,併發布更多的細節和更多的代碼,一個具體的案例,例如你卡住的地方。 – Aybe