带扩展器的列表框到另一个列表框

时间:2016-07-06 20:01:31

标签: wpf vb.net listbox expander

我试图从列表框中的扩展器移动项目(将项目保留在那里)并将其复制到另一个列表框。

<ListBox Name="lbAvailableColumns" Grid.Row="1" Grid.Column="0">
            <Expander Header="Account" Background="Transparent" BorderBrush="{x:Null}"  >
                <StackPanel>
                    <ListBox>
                        <ListBoxItem Content="Account Is Locked Out"/>
                        <ListBoxItem Content="Expiration Date"/>
                        <ListBoxItem Content="Last Lockout Date"/>
                        <ListBoxItem Content="Must Change Password"/>
                        <ListBoxItem Content="Password Age(Days)"/>
                        <ListBoxItem Content="Password Last Changed"/>
                        <ListBoxItem Content="Password Never Expires"/>
                        <ListBoxItem Content="Password Not Required"/>
                        <ListBoxItem Content="Smart Card Required For Logon"/>
                        <ListBoxItem Content="User Cannot Change Password"/>
                        <ListBoxItem Content="Username"/>
                    </ListBox>
                </StackPanel>
            </Expander>
            <Expander Header="Exchange" Background="Transparent" BorderBrush="{x:Null}" />
            <Expander Header="General" Background="Transparent" BorderBrush="{x:Null}"/>
            <Expander Header="Group Membership" Background="Transparent" BorderBrush="{x:Null}"/>
            <Expander Header="Organization" Background="Transparent" BorderBrush="{x:Null}"/>
            <Expander Header="Other" Background="Transparent" BorderBrush="{x:Null}"/>
            <Expander Header="Profile" Background="Transparent" BorderBrush="{x:Null}"/>
            <Expander Header="System" Background="Transparent" BorderBrush="{x:Null}"/>
            <Expander Header="Telephone" Background="Transparent" BorderBrush="{x:Null}"/>
        </ListBox>

我试图做以下事情,并且遇到了一些麻烦。

enter image description here

尝试将项目从扩展程序列表框复制到可见列列表框。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

我写过其中一件事,但没有分组到扩展器中。如果你做得对,分组是一个副作用。

您要做的是为您的viewmodel提供两个ObservableCollection的某些数据项类,比如FromItemsToItems。将XAML中的这两个集合绑定到两个ItemsSource的{​​{1}}属性。

数据项类可以是一个非常简单的quickie类,它有两个属性(不是字段):Say,ListBoxesName,两个字符串。按GroupName分组。 Here's a group template expander answerhere's how to do the actual grouping并在每个GroupName设置DisplayMemberPath="Name"

ListBox按钮会从>中删除左侧列表框的SelectedItem,并将其添加到FromItemsToItems按钮反之亦然。您可能不想从<中删除,但是您必须小心不要将它们添加到FromItems两次。

答案 1 :(得分:2)

根据@Ed Plunkett的建议,我编写了一个完整的例子。

Complete Example

GitHub

上的源代码