2017-09-27 22 views
1

是否有可能動態獲取視圖的綁定屬性到類中並在運行時操作它。 例如,如果DataContext的類型User有10個屬性,但綁定屬性只有4個,我可以創建一個只有這4個屬性的類嗎?如何從WPF中的DataContext中動態創建一個類?

+0

這是可能的。你究竟想達到什麼目標? – MrZander

+0

我想序列化出現在視圖中的數據,並且我想盡可能將它取爲短字符串,所以我想排除未綁定的屬性 –

+0

有時DataContext類有幾十個屬性和集合,但是顯示的內容一個特定的視圖只是幾個屬性,所以序列化這個迷你類會爲我節省很多 –

回答

0

可行,但很難。

  1. 您必須解析視覺樹,並使用VisualTreeHelper訪問每個控件(請參閱:https://stackoverflow.com/a/874426/275330)。
  2. 對於每一個控制,你可以得到它的依賴屬性的列表(見https://stackoverflow.com/a/26367132/275330
  3. 然後對於每個單獨的依賴屬性,你可以檢查它的值在本地設置(見:Knowing if a DependencyProperty has not been set in XAML)。如果是這樣 - 你有你需要的價值。

我從來沒有使用1 + 2 + 3在一起,所以我不知道你可能有什麼額外的困難。