ElementName de Liaison défaillant
J'ai le code XAML suivant:
<Grid>
<Grid.RowDefinitions>
...
</Grid.RowDefinitions>
<DataGrid Grid.Row="0" ...>
<DataGrid.Columns>
...
</DataGrid.Columns>
</DataGrid>
<DockPanel Grid.Row="2">
<CheckBox x:Name="DisplayMarkers" DockPanel.Dock="Top" Content="Display Data Points?"
Margin="8,5,0,5" d:LayoutOverrides="Height" HorizontalAlignment="Left" IsChecked="False" />
<vf:Chart DockPanel.Dock="Top" ScrollingEnabled="False" ZoomingEnabled="True" ToolBarEnabled="True">
<vf:DataSeries AxisYType="Secondary" RenderAs="Line" DataSource="{Binding CdTeRoughnessList}"
XValueType="DateTime"
MarkerEnabled="{Binding ElementName=DisplayMarkers, Path=IsChecked}" Color="Navy"
LegendText="Roughness Std. Dev.">
Cette liaison est un échec: MarkerEnabled="{Binding ElementName=DisplayMarkers, Path=IsChecked}"
Je suis en train d'essayer de se lier à la propriété IsChecked sur ma Case à cocher nommée "DisplayMarkers". Lorsque je l'exécute, dans le mode de débogage dans visual studio 2010, la fenêtre sortie affiche la liaison est un échec. Il ne peut pas trouver l'élément nommé 'Case'. Quelqu'un pourrait-il me dire pourquoi?
L'erreur que je reçois de VS est:
System.Windows.Data Error: 4 : Cannot find source for binding with reference
'ElementName=DisplayMarkers'. BindingExpression:Path=IsChecked; DataItem=null; target element is 'DataSeries' (Name=''); target property is 'MarkerEnabled' (type 'Nullable`1')
- Pour les futurs utilisateurs, vous pouvez exécuter ce problème sur un ContextMenu aussi bien, sans doute pour la même raison.
- J'ai résolu ce problème en définissant la
DataContext
de l'élément parent de la place et de liaison pour que.DataContext="{Binding ElementName=DisplayMarkers}"
Vous devez vous connecter pour publier un commentaire.
Vous pourriez ne pas avoir une portée de nom lorsque vous essayez de lier, vous pouvez essayer de remplacer le
ElementName
construire avecSource={x:Reference DisplayMarkers}
.Pour une solution de contournement pour le potentiel cyclique de la dépendance des erreurs, voir: https://stackoverflow.com/a/6858917/546730
RelativeSource
etElementName
, je soupçonne queDataSeries
n'est pas dans un arbre (il semble abstrait).x:Reference
.x:Reference
, par exemple stackoverflow.com/a/6858917/546730Je devine que l'auteur de la carte, lorsque découlant de FrameworkElement ou que ce soit, n'ont pas réalisé qu'ils avaient besoin d'ajouter tous les éléments enfants de l'arborescence logique que ce soit manuellement ou au moyen d'une dérogation. Vous n'avez pas gratuit lors de la dérivation.
Briser la logique de l'arborescence des sauts de la capacité des enfants à se lier par ElementName.
Si vous êtes l'auteur de l'objet Graphique, vous pouvez voir cette question et la réponse.