El enlace ElementName está fallando


Tengo el siguiente XAML:

<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.">

Este enlace está fallando: MarkerEnabled="{Binding ElementName=DisplayMarkers, Path=IsChecked}"

Estoy tratando de enlazar a la propiedad IsChecked en mi casilla de verificación llamada 'DisplayMarkers". Cuando corro esto, en modo de depuración en VS 2010, la ventana de salida muestra que el enlace está fallando. No puede encontrar el elemento llamado 'Checkbox'. ¿Alguien podría decirme por qué?

El error que recibo de VS es:

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')
Author: H.B., 2012-02-03

2 answers

Es posible que no tenga un namescope donde intente enlazar, podría intentar reemplazar la construcción ElementName con Source={x:Reference DisplayMarkers}.

Para una solución para posibles errores de dependencia cíclica, consulte: https://stackoverflow.com/a/6858917/546730

 84
Author: H.B.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:34:38

Supongo que el escritor de Chart, al derivar de FrameworkElement o lo que sea, no se dio cuenta de que necesitaba agregar cualquier elemento hijo al árbol lógico ya sea manualmente o a través de una anulación. No se obtiene de forma gratuita cuando se deriva.

Romper el árbol lógico rompe la habilidad de los hijos de enlazar por ElementName.

Si usted es el autor del objeto Gráfico, puede ver esta pregunta y respuesta relacionada.

 4
Author: Jeremy White,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:18:20