Options (Menu.Options)
이 포함 된 Menu
개체 (DataContext로 설정 됨)가 있는데,이 개체에는 Name (Option.Name)
과 많은 Options (Option.Options)
이 포함되어 있습니다. 컬렉션은 모두 ObservableCollection<T>
입니다.WP7 ListPicker - DataSource에서 생성 될 때 모델에서 선택된 항목을 표시하는 방법?
메뉴가 XML 파일에서로드되므로 옵션 및 값의 양이 다를 수 있습니다. 내가 어떻게 든 데이터 바인딩 모델의 현재 선택을 표시하고자하는 인 selectionchanged 이벤트에 방법 ListPicker_SelectionChanged
이
<ListBox ItemsSource="{Binding Path=Options}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<!-- Title -->
<TextBlock Text="{Binding Path=Name}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}" />
<!-- Selection -->
<toolkit:ListPicker ItemsSource="{Binding Path=Options}" SelectionChanged="ListPicker_SelectionChanged">
<toolkit:ListPicker.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Name}" />
</DataTemplate>
</toolkit:ListPicker.ItemTemplate>
<toolkit:ListPicker.FullModeItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Name}" />
</DataTemplate>
</toolkit:ListPicker.FullModeItemTemplate>
</toolkit:ListPicker>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
:
하는 시각화하기 위해, 여기에 관련 XAML입니다. 각 ListPicker가 런타임에 생성되므로 메서드에 제공된 매개 변수 만 사용하여이 작업을 수행해야합니다. 따라서 실제 컨트롤 이름을 지정할 수는 없습니다 (필자가 알고있는 한).
나는 두 가지 옵션을 볼 수 있습니다
1)는 CurrentSelection
내가 그 ListPicker
2 마지막으로 선택한 항목에 대한 참조를 넣을 수 있습니다 Menu.Option
, 내부를하려면)를 Selected
을하기를 속성은 Option.Option
에 있습니다. 단점은 새로운 요소가 선택 될 때 모든 요소가 선택 취소되어 있는지 확인하는 것입니다.
sender
의 개체 트리를 탐색하려고 시도했지만 찾은 것 중 ItemsHost
과 같은 것은 액세스 할 수 없습니다 (개인/보호 된).
해결책을 얻을 수있는 방법이 있습니까?
우수한 뒤에는 코드입니다, 내가 필요 정확히, 감사합니다! 한 가지 더 (관련) - SelectedItem 바인딩을 적용하면 디자이너가 "SelectedItem을 항상 유효한 값으로 설정해야합니다."라는 오류를 던지고 있습니다. 디자인 d : DataContext와 관련이있는 것 같습니다 (중복되는 이름은 http://imagebin.org/199982입니다).이 오류를 수정/억제하는 방법에 대한 조언이 있습니까? 전체 오류 메시지 : http://pastebin.com/XQM0zWJZ – Josh
두 옵션은 별도의 인스턴스입니다. SelectedIndex를 사용하여 기본값을 설정해야합니다. 그렇지 않으면 IComparable을 구현하거나 GetHashCode()를 재정의하십시오. –
흠, 그 두 가지를 모두 시험해 보았지만 제대로 작동시키지 못했습니다. 실제 실행 시간면이 잘 작동하기 때문에 예제 디자인 데이터 만 신경 쓸 필요가 없습니다. 감사! – Josh