現在のセットアップ
次のインターフェイスに準拠した、インストーラー ファイルとそのファイルに関するいくつかのプロパティを表すカスタム クラスがあります。
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; }
}
MyViewModel
には というReadOnlyObservableCollection<IInstallerObject>
名前のプロパティがありますAvailableInstallerObjects
。
MyView
には、前述のプロパティにバインドする を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
基本的に、プロパティごとにグループ化して、利用可能な製品のリストを表示し、 の の利用可能なプロパティ値をComboBox
表すようにしたいと考えています。Build
IInstallerObject
ProductType
で使用LINQ
しViewModel
てグループを抽出できますが、抽出したものにどのようにバインドするかわかりません。
私の調査では、 を使用する可能性も判明しましたCollectionViewSource
が、それを現在のセットアップにどのように適用できるかはわかりません。
よろしくお願いします。私は学びたいと思っているので、明らかなことを見落としている場合は、その情報を教えてください。喜んで自分自身を教育します.