0
下面是一個自定義的控制BindableProperty定義:BindableProperty吸氣返回null
public static BindableProperty ItemsSourceProperty =
BindableProperty.Create<NodeListView, IEnumerable<Node>> (ctrl =>
ctrl.ItemsSource,defaultValue: null,
defaultBindingMode: BindingMode.TwoWay,
propertyChanging: (bindable, oldValue, newValue) => {
var ctrl = (NodeListView)bindable;
ctrl.ItemsSource = newValue;
});
public IEnumerable<Node> ItemsSource {
get {
var itemsSource = (IEnumerable<Node>)GetValue (ItemsSourceProperty);
return itemsSource;
}
set {
SetValue (ItemsSourceProperty, value);
BindNodeIcons();
}
}
當我設置的BindingContext上的控制,我可以看到在propertyChanging
的newValue
設置爲正確的對象。同樣在ItemsSource
屬性的設置器中,value
變量採用正確的值。在BindNodeIcons()
方法中,我訪問ItemsSource
屬性,它返回null
。我在代碼中看不到任何錯誤,但仍然存在。
,可以確認投是否工作正常? 「itemsSource」行上的「itemsSource」的值是多少? – Slepz
「return itemsSource」行上的「base.GetValue(ItemsSourceProperty)」和「itemSource」爲空。我立即調用它,我設置了屬性,但它只返回null。 –
我正在查看代碼,我幾乎完全一樣的東西(除了字符串,而不是節點)。我可以看到的唯一區別是,我使用默認(IEnumerable)而不是null作爲defaultValue在bindableProperty構造函數中,並且我不調用setter中的任何內容(而您調用BindNodeIcons())。我很難過。也許嘗試改變你的默認值,並確保你在BindNodeIcons中不會做任何會與屬性混淆的東西 –
Slepz