템플릿 컨트롤이 있습니다. 템플릿의 일부는 다음과 같습니다.Windows Phone, ItemsControl.ContainerFromIndex가 null을 반환합니다.
<ItemsControl x:Name="icSubObjects">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<local:StateButton Content="{Binding}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Items이 패널의 소스는 코드 숨김으로 설정됩니다. 객체가 제대로 표시되고 icSubObjects.Items.Count
가 0보다 큰 것을, 나는 항상 사실에도 불구하고, 널 얻을 icSubObjects.ContainerFromIndex(i)
을 caling 후
for (int i = 0; i < icSubObjects.Items.Count; i++)
{
var element = icSubObjects.ContainerFromIndex(i);
if (element is StateButton)
{
var btn = element as StateButton;
// btn is always null, despite icSubObjects.Items.Count being > 0
}
}
:
그런 다음 코드에서 나는 데이터로부터 생성 된 실제 개체에 액세스하려고 해요 이 방법을 올바르게 작동 시키려면 어떻게해야합니까? (또는 누구인지 내가 잘못하고?)편집 : 나는 문제가 해결 인터넷 트릭에 발견
줄거리가 전개된다. 테이너이어서 올바르게 배치
var temp = gContainer.Children;
다음 트릭 ItemsControl
제어를 보유 용기들 중 하나의 Children
속성을 "접촉"하는 것이다.
다른 문제가 있습니다. ContainerFromIndex
에서 ContentPresenter를 얻습니다. ContentPresenter
의 DataTemplate
안에있는 StateButton
에 어떻게 액세스 할 수 있습니까?
@ 클레멘스 당신은 실제로 아직 질문하지 않은 다음 질문에 대답하려고했습니다. 인터넷상의 어딘가에서 발견 된 것과 같이 문제가 해결되었습니다. 컨테이너의 'Children'속성에 "ItemsControl '이 배치됩니다. 이제이 'ContentPresenter'를 얻었지만'Content' 속성을'StateButton'으로 형변환하면 null이 반환됩니다. 'ContentPresenter'의'Content'는 단순한 문자열입니다. 어떤 아이디어? – Spook
죄송합니다, 잘못된 추적을하고있었습니다. StateButton은 Content 프로퍼티에 삽입되지 않습니다. WPF에서는 XAML에서 이름을 지정하여 (예 :'x : Name = "sb"'를 설정하고 element.ContentTemplate.FindName ("sb", 요소)'(요소는 ContentPresenter)를 호출하여 가져옵니다. 이것이 Windows Phone에서 작동하는지 확실하지 않습니다. – Clemens