2017-04-04 49 views
5

這是一個簡單且頻繁的,我認爲的場景 - 您將XAML中的依賴屬性綁定到viewmodel中的屬性,稍後重命名viewmodel中的屬性並忘記在XAML中重命名它。綁定破壞了。在編譯時已經在XAML中檢測到破壞的綁定

有沒有一種方法可以在編譯時檢測到這種已損壞的綁定?

+1

對於UWA微軟推出X:綁定和它是可編譯的綁定不幸的WPF綁定仍然基於反射。如果在設計時設置了視圖DataContext,那麼我將查看是否有方法使用x:Bind in WPF/ – macieqqq

+0

,設計器顯示下劃線爲不正確的綁定路徑。所以設計時DataContext是一種保險。 – ASh

回答

4

你可以在VM-類添加到您的裝訂線這樣的:

<DataGrid ItemsSource="{Binding Path=(viewModels:MyViewModel.MyItemsSource)}" /> 

有:

namespace ViewModels{ 
    public class MyViewModel{ 
     public ICollectionView MyItemsSource {get; set;} 
    } 
} 

這說明你BindingErrors在設計時

+0

令人驚訝的是,如果我使用它,編譯時會出現錯誤,但綁定在運行時不起作用。我得到System.ArgumentNullException; 「密鑰不能爲空」。我將Text TextBox綁定到VM中的字符串Property。 – Rekshino

+0

@Rekshino:我認爲這個錯誤是在'DesignTime'生成的(當它被構建時)。正常的編譯器不會產生這個錯誤(就像我在build - > output [errors:0]中看到的那樣)。我不知道如何告訴你的編譯器產生這個錯誤。但有了這個,你有機會看到你的綁定將失敗。我認爲'RuntimeException'結果是由'TwoWay' BindingMode造成的。 – WPFGermany

+0

不,在編譯時一切正常,它的工作原理應該如此(如果屬性名稱正確並且錯誤,則無錯誤,否則)! ,但是如果我沒有錯誤地編譯它,運行時就會出現錯誤。 OneWay綁定也是如此。只有OneWayToSource沒有錯誤,但這種模式很少。 – Rekshino