2012-12-06 2 views
1

런타임 중에 C#을 통해 새로운 피벗 항목을 만들고 툴킷에서 ListBoxWithCheckBoxes 유형의 목록 Bx를 표시하여 왼쪽에 표시되거나 숨겨진 체크 상자를 쉽게 토글 할 수 있습니다.런타임에 피벗 항목 만들기 (ListBoxWithCheckBoxes 포함)

현재 피벗 페이지를 그려 내고 항목을 바인딩하는 경우 현재 버전이 작동합니다. 하지만 ListBoxWithCheckBoxes 제대로 작동하도록 가져올 수 없습니다.

내 CS 파일에서입니다 :

var itemTemplate = 
       @"<DataTemplate xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation""> 
        <StackPanel Margin=""0,0,0,17"" HorizontalAlignment=""Stretch"" Height=""78"" Orientation=""Vertical""> 
         <TextBlock Text=""{Binding Title}"" TextWrapping=""Wrap"" Style=""{StaticResource PhoneTextExtraLargeStyle}"" Width=""Auto""/> 
         <TextBlock Text=""{Binding Description}"" TextWrapping=""Wrap"" Margin=""12,-6,12,0"" Style=""{StaticResource PhoneTextSubtleStyle}"" Width=""Auto""/> 
        </StackPanel> 
       </DataTemplate>"; 


      //Creating Pivot Item 
      PivotItem newPiv = new PivotItem(); 
      newPiv.Header = "Pivot Header"; //defining a header 

      //Content for the Pivot Item 
      ListBoxWithCheckBoxes newList = new ListBoxWithCheckBoxes(); //new listbox 
      newList.ItemsSource = App.ViewModel.Items; //Grapping some items 
      newList.ItemTemplate = (DataTemplate)XamlReader.Load(itemTemplate); //using xaml template 

      //Adding the list to the Pivot Item 
      newPiv.Content = newList; //Adding list to Pivot Item 
      MainItemList.Items.Add(newPiv); //Adding Pivot Item 

추가 정보 : 나는 그것을 의심 네임 스페이스와 함께 할 수있는 뭔가가합니다. XAML에, 이것은 추가됩니다

xmlns:my="clr-namespace:System.Windows.Controls;assembly=WindowsPhoneListBoxWithCheckBoxesControl" 

그리고 런타임에서 C#을 통해 제작되지 않은 일반 ListBoxWithCheckBoxes은 잘 작동합니다. 이 이런 식으로 구성됩니다 이벤트 핸들러에 MyPivotItem에로드 이벤트에 대한

<my:ListBoxWithCheckBoxes x:Name="FancyListBox" Margin="0,0,-12,0" HorizontalAlignment="Stretch" ItemsSource="{Binding Items}" > 

답변

1

등록을하고 "IsInChooseState" "true"로 설정

private void MyPivotItem_Loaded(object sender, RoutedEventArgs e) 
{ 
    MyPivotItem pivotItem = sender as MyPivotItem; 
    pivotItem.myListBox.IsInChooseState = true; 
}