當前設置
我有一個代表安裝程序文件和有關文件的一些屬性的自定義類,應符合以下接口綁定對象列表定製的ItemTemplate到的ItemsControl在MVVM
public interface IInstallerObject
{
string FileName { get; set; }
string FileExtension { get; set; }
string Path { get; set; }
int Build { get; set; }
ProductType ProductType { get; set; }
Architecture ArchType { get; set; }
bool Configurable { get; set; }
int AverageInstallTime { get; set; }
bool IsSelected { get; set; }
}
我ViewModel
有一個名爲AvailableInstallerObjects
的ReadOnlyObservableCollection<IInstallerObject>
屬性。
我的View
有一個GroupBox
包含ItemsControl
它結合上述性質。
<GroupBox Header="Products">
<ItemsControl ItemsSource="{Binding Path=AvailableInstallerObjects}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding Path=IsSelected}"
VerticalAlignment="Center" Margin="5"/>
<TextBlock Text="{Binding Path=FileName}" Margin="5" />
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</GroupBox>
的結合工作正常,但它不是用戶友好的。顯示100多個項目。
需要幫助這裏
我希望能夠使用的IInstallerObject
我的珍藏,但有View
具有以下ItemTemplate
結構呈現出來。
<GroupBox Header="Products">
<ItemsControl ItemsSource="{Binding Path=AvailableInstallerObjects}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding Path=IsSelected}"
VerticalAlignment="Center" Margin="5"/>
<TextBlock Text="{Binding Path=ProductType}" Margin="5" />
<ComboBox ItemsSource="{Binding Path=Build}" />
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</GroupBox>
基本上,我希望能夠以組由ProductType
屬性,顯示可用產品的列表,以表示對IInstallerObject
S中ProductType
的可用Build
屬性值ComboBox
。
我可以在ViewModel
中使用LINQ
來提取分組,但我不知道如何綁定到我已經提取的分組。
我的研究也發現了使用CollectionViewSource
的可能性,但我不確定如何將其應用於我當前的設置。
我很感謝你的幫助。我願意學習,所以如果我忽略了一些明顯的情況,請直接告訴我這些信息,我很樂意教育自己。