0

我尝试了很多选择,但没有一个能让我更接近结果。

我对 WPF 真的很陌生,所以我很抱歉提出我可能微不足道的问题。我有一个选择listbox,我需要将该selected项目添加到另一个列表框。我尝试创建一个列表,将所选项目添加mouse click到此列表中,然后将另一个列表框绑定到它。我试着声明

chosen_list.SelectedValue=selection_list.SelectedItem;

我试图创建一个可观察的集合,但没有任何效果。我在第二个列表框中得到的只是第一个选择的值。

没有可观察的集合有没有办法做到这一点?

请帮助并提前谢谢您。

4

2 回答 2

0

正如 Mustafa sais 所说(他本可以详细说明一下),这是每次在第一个列表中进行新选择时都需要执行的操作。因此,我将连接您的第一个列表的“SelectionChanged”事件。在此事件处理程序中,您可以清除第二个列表的内容并将新选择的项目添加到第二个列表中。

这是我的意思的一个非常简单的例子:

这是 XAML 页面:

<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
    <Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="0.5*" />
        <ColumnDefinition Width="0.5*" />
    </Grid.ColumnDefinitions>
    <ListBox x:Name="lstFirstList" Grid.Column="0" SelectionChanged="ListBox_SelectionChanged">
        <ListBoxItem Content="This is a test 1" />
        <ListBoxItem Content="This is a test 2" />
        <ListBoxItem Content="This is a test 3" />
        <ListBoxItem Content="This is a test 4" />
        <ListBoxItem Content="This is a test 5" />
        <ListBoxItem Content="This is a test 6" />
        <ListBoxItem Content="This is a test 7" />
        <ListBoxItem Content="This is a test 8" />
        <ListBoxItem Content="This is a test 9" />
        <ListBoxItem Content="This is a test 10" />
    </ListBox>
    <ListBox x:Name="lstSecondList" Grid.Column="1">

    </ListBox>
    </Grid>
</Window>

这是背后的代码:

/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        lstSecondList.Items.Clear();
        if (e.AddedItems.Count != 0)
        {
            ListBoxItem vSelectedItem = (ListBoxItem)e.AddedItems[0];
            ListBoxItem vNewItem = new ListBoxItem();
            vNewItem.Content = vSelectedItem.Content;
            lstSecondList.Items.Add(vNewItem);
        }
    }
}

现在可能有更好的方法来做到这一点,但至少这应该让你开始!

于 2013-05-17T13:56:53.997 回答
0

您可以使用事件 SelectionChanged http://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.selector.selectionchanged.aspx

于 2013-05-17T13:46:03.790 回答