我正在處理一個C#WPF組件(包含VS2010版本10.0.40219.1 SP1Rel),其中包含像int和List這樣的公共屬性。XAML列表值設置器與預先存在的項目
成分似乎是由VS2010 WPF編輯細被序列化爲在的.xaml生成的XML塊是這樣的:
<Parent>
<NumberProperty>10</NumberProperty>
<ListProperty>
<Item>
blah
</Item>
</ListProperty>
</Parent>
當反序列化組分(即運行該應用程序)時,列表屬性是讀取(運行getter)並添加項目。列表中沒有運行setter的人。
問題是該列表故意包含默認項目,該項目被添加到項目父構造函數的列表中。這些/這個預先存在的項目應該被列表中的項目取代,如果有的話在相關的xaml中可用的話。
我試過DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)
作爲list屬性沒有運氣。
所以有可能通過某些屬性告訴環境它應該替換列表屬性(調用setter)而不是向它添加項目?
謝謝:)我有點害怕它必須由代碼完成。對於最終用戶的觀點(在我的情況下),可能會很好添加一個內部構造函數,它將'_hasDefaultValue'設置爲true,其他構造函數不是。但是這仍然會帶來麻煩,因爲無法分辨無參數構造函數是由用戶還是由xaml-loader調用的。而且我寧願不更改容器,因爲已經使用了以前的版本。我在列表getter中嘗試了類似的方法,這會清空列表,如果組件尚未初始化(醜陋)。需要更多的挖掘。 – user1746986