我有一組類,它包含的項目列表和標題:選擇多個列表項目
public class MyGroup {
public MyGroup(string _header){
header = _header;
}
protected string header = "";
public string Header
{
get { return header; }
}
protected List<MyGroupItem> item = new List<MyGroupItem>();
public List<MyGroupItem> Item
{
get { return item; }
}
}
public class MyGroupItem {
public MyGroupItem(string _name, double _multiplier){
name = _name;
multiplier = _multiplier;
}
protected double multiplier = 1.0;
protected string name = "";
public string Name
{
get { return name; }
}
}
到目前爲止好。在我的主類,我組的觀察的集合,我填充它是這樣的:
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顯示多個項目列表。控件應該爲組的名稱放置標題,然後顯示該組中特定項目的列表視圖。佈局完美...但是,問題來了,當我處理選定項目。基本上,列表視圖允許我在多個組中選擇一個項目......這意味着我可能在任何給定時間選擇多個項目。例如,假設我選擇了組A中的第一個項目,但是,我將選擇更改爲組B中的第二個項目。因爲組B是一個單獨的列表,它允許我激活該項目......但它不會取消選擇組A中的項目。我想要的是這個多列表組作爲單個列表。這可能嗎?我是否需要單獨設置SelectionChanged事件?如果是的話,我該如何確定選擇何時被更改,以便清除所有列表中的選定項目,並且只顯示用戶剛選擇的正確項目?
這工作完美!感謝徹底的迴應! – andyopayne