2012-03-27 50 views
0

我想隱藏一個控件,如一個TextBox,當它有一個屬性,如Text屬性是無效的綁定(已引發BindingExpression路徑錯誤)。這與簡單地檢查觸發器中的綁定值是否爲空不同。實際上,空值可能是完全可接受的值,並且控件仍應顯示。基本上我有一個DataTemplate,我想從我的虛擬機中重用幾種不同類型的對象,其中一些可能具有某些共同的屬性,其中一些可能具有獨特的屬性。當一個特定屬性不存在於當前是DataTemplate的綁定源的對象上時,DataTemplate將具有某種附加的觸發器或綁定,這將隱藏綁定到不存在的屬性的特定控件。如何隱藏控件時,它有一個無效綁定

+0

我剛纔已經回答有效這裏同樣的問題http://stackoverflow.com/questions/9893825/mvvm-hiding-a-control-when-bound的ValidatesOnDataError = True -property-is-present – Phil 2012-03-27 17:26:35

+0

太棒了!謝謝@Phil,我正在尋找 – 2012-03-28 10:46:38

回答

0

當驗證錯誤發生時,您可以使用Validation.ErrorTemplate來控制風格。

然後,只需設置在結合和遠離你去

+0

但是如果還有另一個合法的驗證錯誤呢?例如一個TextBox.Text綁定到一個整數,用戶鍵入一個字母,拋出一個驗證錯誤(無法解析整數),然後TextBox消失。 – 2012-03-27 14:47:35

+0

此外,爲綁定設置ValidatesOnDataError = True,似乎並沒有真正捕獲BindingExpression路徑錯誤 – 2012-03-27 15:01:59

+0

嗯,是的,我顯然沒有想到它。菲爾的評論似乎是一個很好的解決方案。 FallBackValue和一個可見性轉換器。這完全有效。 – 2012-03-28 05:29:47

相關問題