私は、項目のリストとヘッダを含むグループクラスを持っています。私のメインクラスでは、私はグループの監視可能なコレクションを持っていると私はこのようにそれを移入:選択した項目が
protected ObservableCollection<MyGroup> groups = new ObservableCollection<MyGroup>();
public ObservableCollection<MyGroup> Groups
{
get { return groups; }
}
protected MyGroupItem currentItem;
public MyGroupItem CurrentItem
{
get { return currentItem; }
set
{
if (currentItem== value) return;
currentItem= value;
NotifyPropertyChanged("CurrentItem");
}
}
....
var GroupA = new MyGroup("Group A");
GroupA.MyGroupItem.Add("Item 1", 1.0);
Groups.Add(GroupA);
currentItem = GroupA.MyGroupItem[0];
上記のすべては、単に私はセットアップ私のクラスと観測可能なリストをした方法を示しています。今、私はxamlに切り替えます。
<ItemsControl ItemsSource="{Binding Path=Groups}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Background="Transparent" ClipToBounds="True" Orientation="Vertical"></StackPanel>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate DataType="{x:Type local:MyGroup}">
<StackPanel>
<TextBlock Text="{Binding Path=Header}"></TextBlock>
<ListView ItemsSource="{Binding Path=MyGroupItem}" SelectedItem="{Binding Path=DataContext.CurrentItem, ElementName=ControlRoot}">
<ListView.ItemTemplate>
<DataTemplate DataType="local:MyGroupItem">
<TextBlock Text="{Binding Path=Name}"></TextBlock>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
したがって、基本的にはアイテムの複数のリストを表示するItemControlがあります。コントロールは、グループ名のヘッダーを配置し、そのグループ内の特定の項目のリストビューを表示する必要があります。レイアウトは完璧に機能します...しかし、問題は私がを扱うときに出ます。選択項目。基本的には、リストビューで複数のグループのうちの1つのアイテムを選択することができます。つまり、いつでも複数のアイテムを選択できます。たとえば、グループAの最初の項目を選択するとします。ただし、グループBの2番目の項目に変更します。グループBは別のリストであるため、その項目をアクティブにできますが、グループAの項目を選択解除しません。私が望むのは、この複数リストグループを単一のリストとして機能させることです。これは可能ですか?別途セットアップする必要がありますかSelectionChangedイベント?そしてもしそうなら、選択したアイテムをすべてのリストからクリアし、ユーザーが選択したものだけを表示するように、選択が変更されたことを確認するにはどうすればよいですか?
これは完全に機能しました。徹底的な対応をありがとう! – andyopayne