Hos*_*146 37 data-binding wpf xaml
我有以下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.">
Run Code Online (Sandbox Code Playgroud)
此绑定失败: MarkerEnabled="{Binding ElementName=DisplayMarkers, Path=IsChecked}"
我正在尝试绑定到我的Checkbox上名为'DisplayMarkers'的IsChecked属性.当我运行它时,在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')
Run Code Online (Sandbox Code Playgroud)
H.B*_*.B. 93
您可能没有尝试绑定的名称范围,您可以尝试使用替换ElementName构造Source={x:Reference DisplayMarkers}.
有关潜在的周期性依赖性错误的解决方法,请参阅:https://stackoverflow.com/a/6858917/546730
我猜测 Chart 的作者在从 FrameworkElement 或其他内容派生时未能意识到他们需要手动或通过覆盖将任何子元素添加到逻辑树中。推导时你不会免费得到它。
破坏逻辑树会破坏子级通过 ElementName 进行绑定的能力。
如果您是 Chart 对象的作者,您可以查看此相关问题和答案。