1

アプリケーション (IDE : Visual Studio 2010、言語 : C#、テクノロジー : WPF および MVVM) で ListBox の選択したアイテムをバインドする際に問題があります。

要件: インターフェイスのリストと、各インターフェイスに接続されているデバイスの別のリストがあります。これら 2 つのリストを表示するパターンは次のとおりです。

インターフェース 1

Device 1

Device 2

Device 3

インターフェイス 2

Device 1

Device 2

インターフェイス 3

Device 1

Device 2

Device 3

Device 4

等々。

いずれかのインターフェースが選択されている場合、デフォルトで最初のデバイスが選択されている必要があり、いずれかのデバイスが選択されている場合は、対応するインターフェースが選択されている必要があります。前半はできますが、後半はできません。選択したアイテムをデバイスのすべての内部リストで一意にするにはどうすればよいですか?

上記のリストをエキスパンダーのリストとして表示したいのですが、各エクスパンダーは次の形式になります。

私がはっきりしていることを願っています。

このための wpf コントロールがあるかどうか教えてください。それとも、新しい ListBox を開発する必要がありますか?

よろしくクルチカ

4

1 に答える 1

0

この要件によると:

選択したアイテムをデバイスのすべての内部リストで一意にするにはどうすればよいですか?

1 つの大きなリストボックスでグループを定義するだけです。

public class Interface
{
    public string Name { get; set; }
    public List<Device> Devices { get; set; }
}

public class Device
{
    public string Name { get; set; }
}

<CollectionViewSource x:Key="interfaces" Source="{Binding SomePropertyGivingInterfaces}" >
    <CollectionViewSource.GroupDescriptions>
        <PropertyGroupDescription PropertyName="Name" />
    </CollectionViewSource.GroupDescriptions>
</CollectionViewSource>

<DataTemplate x:Key="interfaceTemplate" DataType="Interface">
    <StackPanel Orientation="Horizontal">
        <TextBlock Text="{Binding Name}" />
    </StackPanel>
</DataTemplate>

<ListBox ItemsSource="{Binding Source={StaticResource interfaces}}">
    <ListBox.GroupStyle>
        <GroupStyle HeaderTemplate="{StaticResource interfaceTemplate}" />
    </ListBox.GroupStyle>
    <ListBox.ItemTemplate>
        <DataTemplate DataType="Device">
            <ListBox ItemsSource="{Binding Devices}">
                <ListBox.ItemTemplate>
                    <DataTemplate DataType="Device">
                        <TextBlock Text="{Binding Name}" />
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

次に、1 つのデバイスしか選択できない場合。

于 2013-02-21T13:27:59.080 に答える