1

我无法在我的应用程序中绑定 ListBox 的选定项(IDE:Visual Studio 2010,语言:C#,技术:WPF 和 MVVM)。

要求:有一个接口列表和另一个连接到每个接口的设备列表。显示这两个列表的模式如下:

接口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

根据这个要求:

如何使所选项目在所有内部设备列表中都是唯一的?

您应该只在一个大列表框中定义组:

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>

然后当您只能选择一个设备时。

于 2013-02-21T13:27:59.080 回答