WPF로 작성한 컨트롤을 Windows Phone 용 Silverlight로 변환하려고합니다. 나는 많은 것을 배웠고 두 버전 모두 개선 된 점이 많았지 만 Silverlight 버전의 ListBox에서 ScrollViewer를 가져올 수없는 것 같습니다. 처음부터 아주 간단 보였다 :이 라인에 도달하면ListBox 하위 개수가 0입니다.
ScrollViewer s = VisualTreeHelper.GetChild(List, 0) as ScrollViewer;
그러나, 나는 VisualTreeHelper에 따라, 명백하게 IndexOutOfRangeException--를 얻을, 내 목록 상자가 시각적 아이가 없습니다. 나는이 특별한 경우 인 느낌을 얻을 수 있기 때문에, 여기에 목록 상자의 내 XAML 선언은
입니다 :
나는 분명히 그 실버 라이트에서 읽기 전용 속성이 있기 때문에 바인딩 ContentTemplate을 주석했다<ListBox x:Name="List" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"
ItemsSource="{Binding ItemsSource, ElementName=SnapListControl}"
ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListBox.Style>
<Style TargetType="ListBox">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBox">
<ScrollViewer HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden">
<VirtualizingStackPanel Orientation="Horizontal" IsItemsHost="True"
Margin="{Binding ActualWidth, ElementName=LayoutRoot, Converter={StaticResource Hc}}">
</VirtualizingStackPanel>
</ScrollViewer>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListBox.Style>
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="RenderTransformOrigin">
<Setter.Value>
<Point X="0.5" Y="0.5"/>
</Setter.Value>
</Setter>
<Setter Property="Padding" Value="0"/>
<!--<Setter Property="ContentTemplate" Value="{Binding ItemContentTemplate, ElementName=SnapListControl}"/>-->
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
? 이 문제를 해결하면 더 자세히 조사해야 할 것입니다.
나는 이것을 인터넷 검색으로 많이 찾을 수 없으며, 대부분의 사람들은 위의 방법을 사용하여 성공한 것으로 보인다. 그것은 확실히 WPF에서 작동합니다.
아, 내가 그 모든 내가 (예를 들어, 난 아무것도 숨기려하지 않는 수행 할 작업을 반드시 생각하지 않습니다, 나는 조작에 대한 ScrollViewer에 대한 참조를 확보 할 스크롤 값의)하지만, 나는 ListBox의 ItemsPanel을 어떻게 변경했는지에 대한 주된 문제를 확인했다고 생각한다. 이전에 보여준 방법을 사용하는 것을 기억합니다. 나는 왜 내가 이번에 그것을하지 않았는지 잘 모르겠다. 나는 그것을 바꾼 후에 다시보고 할 것이다. –
좋아요, WPF에서와 같이 작동하지 않지만 제대로 작동하거나 적어도 배포하는 것으로 보이지만 계속 진단 할 수 있습니다. 변경 사항이 잘 적용되었습니다. 내가 가진 주요 문제 중 하나는 Silverlight에 존재하지 않는 StackPanel의 "IsItemsHost"속성을 여전히 가지고 있다는 것이 었습니다. Intellisense가 그것을 잡아 내지 않았기 때문에 "Unspecified Error"예외가 발생했습니다. 혼란 스러웠습니다. 당신의 도움을 주셔서 감사합니다. –