J'ai un contrôle utilisateur - disons "ControlBase". Il a la propriété "SomeItems", qui est un ObservableCollection<InheritedFromDO>
, où InheritedFromDO
est une classe héritée de "DependencyObject".
Lorsque je crée un balisage pour une classe enfant du ControlBase
, je voudrais lancer la collection "SomeItems". Mais de toute façon je ne peux pas utiliser les liaisons dans ce balisage, bien que le contrôle ait un DataContext assez normal et que la liaison fonctionne dans des cas normaux.DataBinding échoue pour une propriété de collection de contrôle personnalisé
Il ressemble à ceci:
<local:ControlBase
...
>
<local:ControlBase.SomeItems>
<SomeItem
DepPropertyOne={Binding Id} <!-- Does NOT work here -->
/>
<SomeItem
DepPropertyOne={Binding Name} <!-- Does NOT work here -->
/>
<local:ControlBase.SomeItems>
<Grid>
<TextBlock
Text={Binding Id} <!-- Works here -->
/>
</Grid>
</local:ControlBase>
La sortie dit:
System.Windows.Data Error: 2 : Cannot find governing FrameworkElement or FrameworkContentElement for target element. BindingExpression:Path=Id; DataItem=null; target element is 'SomeItem' (HashCode=26965808); target property is 'DepPropertyOne' (type 'Object')
Toute idée comment le faire fonctionner?
Merci Kent, c'est exactement ce dont j'avais besoin. Il semble également résoudre certains problèmes que j'avais avec la résolution des ressources – arconaut
bien que, il fonctionne toujours correctement seulement si les objets sont hérités de FrameworkElement, pas seulement DependencyObject – arconaut