0

내가 작업중인 xaml을 "포함하는"그리드의 ActualHeight에 따라 동적 데이터 페이지 PageSize를 설정해야합니다. 포함 된 XAML의 코드 숨김에서이 ​​그리드에 액세스해야하며 "개체 참조 필요"오류가 계속 발생합니다. 여기다른 xaml의 코드 숨김에서 xaml 개체 참조?

그리드가 "부모"Main.xaml 파일에 정의 된 방법입니다

<Grid x:Name="GridContent" MaxHeight="500" MinHeight="400" Grid.ColumnSpan="1" ScrollViewer.VerticalScrollBarVisibility="Auto" /> 

을 그리고 여기에 내가 어떻게 내 Page.xaml.cs에 액세스를 시도하고있다 :

Grid gridContent = baseProject.Main.GridContent; 

GridContent에 대한 "개체 참조 필요"오류를 반환합니다.

또한 Main.xaml.cs에서 GridContent에 대한 공용 접근자를 만들려고했지만 Page.xaml.cs에서 호출 할 때 여전히 "object reference required"오류가 발생합니다. 이번에는 "baseProject.Main .gridContentAccessor.get ".

무엇이 누락 되었습니까? 이 Grid의 인스턴스를 어떻게 잡을 수 있습니까?

+0

사실 고맙습니다.이 높이 값의 필요성을 없애는 해결책을 찾았습니다. Page.xaml이이 "GridContent"그리드에 통합되어 있기 때문에 Page.xaml의 "UserControl"요소의 ActualHeight를 사용할 수 있습니다. 논리적으로 GridContent의 ActualHeight와 일치합니다. 대체 솔루션을 찾은 이후로이 질문에 정확히 답하지는 않습니다 (즉, 다른 xaml 파일의 요소에 액세스하는 방법). 그러나 문제가 해결되었다는 사실을 여기에 알리고 싶습니다. – SylvainB

답변

0

VisualTreeHelper 기능을 살펴보십시오. 원하는 개체를 찾을 때까지 VisualTreeHelper.GetParent (this)를 호출하는 재귀 함수 라인을 따라 뭔가를 시도해보십시오.

+0

오해가있을 경우 사전에 사과드립니다. 그러나 두 클래스 사이에 실제 "부모/자녀"관계가 있다고 생각하지 않습니다. "Page.xaml"은 "Main.xaml"에 정의 된 Grid에 포함 된 많은 페이지 중 하나입니다. 그래서 Main.xaml을 "부모"로 언급 한 것은 아마도 사실보다 더 우스꽝 스럽습니다. – SylvainB

+0

xaml이 처리되고 렌더링되면 모든 사용자 정의 컨트롤을 "병합되지 않은"것으로 생각할 수 있습니다. main.xaml의 Grid에는 page.xaml이라는 usercontrol이 있습니다. 따라서 GetParent를 계속해서 호출하고 런타임을 호출하면 이전 호출의 결과를 매개 변수로 전달하여 결국 원하는 main.xaml 내용에 도달해야합니다. – PaulMolloy

+0

실은 지금 네가 의미하는 바를 본다. 비록 당신은 또한 FrameworkElement에 대해 "Parent()"메서드를 호출 할 수 있지만 꽤 멋지다고 생각합니다. 그러나 코드에서 조금 반복됩니다. – SylvainB