2013-05-17 3 views
0

많은 옵션을 시도했지만 그 중 아무도 결과에 더 가깝게 접근하지 못했습니다.단일 선택 목록 상자에서 다른 목록 상자로 선택한 항목

저는 WPF에 정말 익숙합니다. 그래서 저는 아마도 사소한 질문을하게됩니다. 하나의 선택이 listbox이고 selected 항목을 다른 목록 상자에 추가해야합니다. 나는이 목록에 mouse click에 선택한 항목을 추가하고 다른 목록 상자를 바인딩하는 목록을 만들려고했습니다. 그냥 선언하려고했습니다.

chosen_list.SelectedValue=selection_list.SelectedItem; 

관찰 가능한 컬렉션을 만들려고했으나 아무런 효과가 없습니다. 두 번째 목록 상자에 들어간 것은 처음으로 선택한 값입니다.

관찰 가능한 컬렉션이 없으면 어떻게해야합니까?

도와 주셔서 감사합니다. 미리 감사드립니다. 당신은 이벤트 사용할 수 있습니다

답변

0

http://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.selector.selectionchanged.aspx을 인 selectionchanged. 그래서 첫 번째 목록의 "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); 
     } 
    } 
} 

이제이있을 수 있습니다 여기

무슨 뜻인지의 아주 간단한 예입니다 이 작업을 수행하는 더 좋은 방법이지만 최소한 작업을 시작해야합니다!

+0

누구나 순수 바인딩을 통해이를 수행하는 방법을 알고 있다면 흥미로울 것입니다. 내 "하위 뇌"는 가능해야한다고 말했습니다! ;-) – JFTxJ

0

는이 과정이 새로운 선택이 첫 번째 목록에서 이루어집니다마다 구현해야 할 작업은 무스타파 SAIS는 (그는 조금 정교 수도)으로