1

WindowsPhoneGeek part1 part2 で MultiselectList の使用例を読んだ

MultiselectList の SelectAll および UnSelectAll 関数を実装すると、項目数が特定の制限を超えると、MultiselectList のすべての項目が適切に選択/選択解除されないことがわかりました。次のコードの if セクションに入らない項目があります。

DependencyObject visualItem = itemContainerGenerator.ContainerFromItem(pizzaOption);
MultiselectItem multiselectItem = visualItem as MultiselectItem;
if (multiselectItem != null)
{
    // NOTE: this will also add an item to the SelectedItems collection
    multiselectItem.IsSelected = selected;
}

その時、すべての multiselectItem が UI に表示されたわけではないからだと思います。しかし、UI の項目だけでなく、MultiselectList のすべての項目を選択するには、SelectAll が必要です。私に何ができる?回避策として、IsSelected プロパティを viewmodel にバインドすることを考えていましたが、次のコードを試してみたところ、そのページの xaml を解析するときに例外が発生しました。

<toolkit:MultiselectList.ItemContainerStyle>
    <Style TargetType="toolkit:MultiselectItem">
        <Setter Property="HintPanelHeight" Value="75"/>
        <Setter Property="IsSelected" Value="{Binding IsMarked, Mode=TwoWay}"/>
    </Style>
</toolkit:MultiselectList.ItemContainerStyle>

助けてください..よろしくお願いします:D

4

1 に答える 1

0

xaml 解析エラーが発生するのは、

<Style TargetType="toolkit:MultiselectItem">
        <Setter Property="HintPanelHeight" Value="75"/>
        <Setter Property="IsSelected" Value="{Binding IsMarked, Mode=TwoWay}"/>
</Style>

リソース上にある必要があります、としましょう

<toolkit:MultiselectList.Resources>
    <Style TargetType="toolkit:MultiselectItem">
            <Setter Property="HintPanelHeight" Value="75"/>
    </Style>
</toolkit:MultiselectList.Resources>

私にとっては、MultiselectList の datacontext をクラスにバインドし、その項目に対して foreach を次のように実行します。

DataContext = new List<ClassADataContext>();

foreach(var items in DataContext)
{
  ... logic
   items.IsMarked = false; or whatever
}
于 2012-04-12T03:21:58.793 に答える