Ошибка привязки элемента ElementName
У меня есть следующий 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.">
Эта привязка не работает: MarkerEnabled="{Binding ElementName=DisplayMarkers, Path=IsChecked}"
Я пытаюсь привязать свойство IsChecked к моему флажку с именем "DisplayMarkers". Когда я запускаю его, в режиме отладки в VS 2010, окно вывода показывает, что привязка не работает. Он не может найти элемент с именем "Checkbox". Может ли кто-нибудь сказать мне, почему?
Ошибка, которую я получаю от VS:
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')
Ответы
Ответ 1
У вас может не быть указатель имен, где вы пытаетесь привязать, вы можете попытаться заменить конструкцию ElementName
на Source={x:Reference DisplayMarkers}
.
Обходной путь для возможных циклических ошибок зависимостей см.: fooobar.com/questions/89381/...
Ответ 2
Я предполагаю, что автор диаграммы, получая из FrameworkElement или что-то еще, не понял, что им нужно добавить любые дочерние элементы в логическое дерево либо вручную, либо через переопределение. Вы не получаете это бесплатно при получении.
Ломать логическое дерево ломает способность детей связываться с ElementName.
Если вы являетесь автором объекта Chart, вы можете увидеть этот связанный вопрос и ответ.