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}"
'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')
바인딩할 이름 범위가 없을 수도 있습니다. 이름 범위를 바꿀 수도 있습니다.ElementName
로 구성하다.Source={x:Reference DisplayMarkers}
.
요점은 XAML에 시각적 또는 논리적 트리에 없는 요소가 있으면 다음과 같은 특정 바인딩을 사용할 수 없다는 것입니다.RelativeSource
그리고.ElementName
나는 의심합니다.DataSeries
어떤 트리에도 없습니다(확실히 추상적으로 들립니다).
잠재적인 순환 종속성 오류에 대한 해결 방법은 https://stackoverflow.com/a/6858917/546730 을 참조하십시오.
차트 작성자는 FrameworkElement 등에서 파생되었을 때 수동으로 또는 재정의를 통해 논리 트리에 하위 요소를 추가해야 한다는 것을 깨닫지 못한 것 같습니다.당신은 그것을 파생할 때 무료로 얻을 수 없습니다.
논리 트리를 해제하면 ElementName으로 바인딩하는 하위 기능이 해제됩니다.
차트 개체의 작성자인 경우 이와 관련된 질문과 답변을 볼 수 있습니다.
다른 독자의 경우, 다른 가능한 원인은 다음 역할에 대한 사용자 정의 컨트롤 대신 사용자 컨트롤을 사용하는 것입니다.vf:Chart
,위에.분할 버튼(차트 역할)을 작성하고 UserControl에서 사용자 지정 컨트롤로 변경하면 ElementName 바인딩이 작동합니다.
언급URL : https://stackoverflow.com/questions/9122592/elementname-binding-is-failing
'sourcetip' 카테고리의 다른 글
쉬운 인터뷰 질문이 어려워졌습니다: 1번이 주어졌습니다.100, 정확하게 k가 누락된 경우 결측 번호 찾기 (0) | 2023.05.23 |
---|---|
python에서 목록이 항목을 공유하는지 테스트합니다. (0) | 2023.05.23 |
목록(String) 또는 배열 또는 배열 목록 (0) | 2023.05.23 |
노드JS: base64 인코딩된 문자열을 다시 이진으로 디코딩하는 방법은 무엇입니까? (0) | 2023.05.18 |
asp.net 에서 서버 캐시를 지우려면 어떻게 해야 합니까? (0) | 2023.05.18 |