1

実行時に C# を使用して新しいピボット項目を作成し、ツールキットから ListBoxWithCheckBoxes タイプのリスト Bx を表示して、左側で表示または非表示のチェックボックスを切り替えやすくしたいと考えています。

私の現在のバージョンは、新しいピボット ページを描画し、それにアイテムをバインドする限り、機能します。しかし、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 は正常に動作します。これは次のように行われます。

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

1 に答える 1

1

MyPivotItem の Loaded イベントに登録し、イベント ハンドラーで「IsInChooseState」を「true」に設定します。

private void MyPivotItem_Loaded(object sender, RoutedEventArgs e)
{
    MyPivotItem pivotItem = sender as MyPivotItem;
    pivotItem.myListBox.IsInChooseState = true;
}
于 2012-12-07T09:53:13.053 に答える