2012-04-02 2 views
0

질문 제목에는 거의 모든 것이 나와 있습니다. 한 창에 동물 목록 상자가 있고 "새 동물 추가"버튼이 있습니다. 그 버튼을 클릭하면 새 창에 동물에 필요한 날짜를 입력하고 "동물 저장"버튼을 누르면 해당 동물을 첫 번째 창의 목록 상자에 추가하려고합니다.상위 창 목록 상자에 항목을 추가 하시겠습니까?

<Window x:Class="HelloZooWPF.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:model="clr-namespace:HelloZoo.Model;assembly=HelloZoo.Model" 
    xmlns:helloZooWpf="clr-namespace:HelloZooWPF" 
    Title="Hello Zoo Wpf" 
    Height="500" 
    Width="525"> 
    <Window.DataContext> 
    <model:Zoo Name="Belgrade Zoo"> 
     <model:Zoo.Animals> 
      <model:Lion Name="Zeus" Weight="900" ImagePath="pack://application:,,,/Images/Lion.jpg"/> 
      <model:Lion Name="Simba" Weight="200" ImagePath="pack://application:,,,/Images/Lion.jpg"/> 
      <model:Antelope Name="Daisy" Weight="200" ImagePath="pack://application:,,,/Images/antelope.jpg"/> 
      <model:Antelope Name="Rosie" Weight="200" ImagePath="pack://application:,,,/Images/antelope.jpg"/> 
      <model:Antelope Name="Goldie" Weight="200" ImagePath="pack://application:,,,/Images/antelope.jpg"/> 
     </model:Zoo.Animals> 
    </model:Zoo> 
    </Window.DataContext> 
    <Grid> 
    <ListBox ItemsSource="{Binding Path=Animals}" Grid.Row="2" AlternationCount="2"/> 
    <Button Content="New animal" Click="Button_Click"/> 
    </Grid> 
</Window> 

Grid.RowDefinitions 및 Grid.ColumnDefinitions와 같은 모든 xaml 코드를 복사하지 않았습니다. Button_Click에서 나는 단지 NewAnimalWindow n = new NewAnimalWindow(); n.ShowDialog();라고 말합니다.

NewAnimalWindow는 이름과 무게의 두 개의 텍스트 상자, 동물 유형의 콤보 박스 및 부모 창에서 동물 모음에 동물을 추가하려는 "저장 동물"버튼이 있습니다. 구현 사례에 대한 대부분의 사소한

답변

0

이 AnimalsList을 NewAnimalWindow에서 사용자 정의 생성자를 정의하고 통과하는 것입니다 :

public class NewAnimalWindow : ... 
{ 
    private List<Animal> _animals; 
    public NewAnimalWindow(List<Animal> animals) 
    { 
     _animals = animals; 
    } 

    .... 

    public SaveButton_Click(...) 
    { 
     Animal animal = new Animal(name, weight); 
     _animals.Add(animal); 
    } 
} 

다른 옵션은 다음과 같습니다

  1. 응용 프로그램에서 어딘가에 세계 동물의 목록을 사용하여
  2. 일부 버튼을 클릭 할 때 호출 될 AddAnimal (동물)과 같은 메소드를 사용하여 동물 목록 대신 포스트 백 인터페이스 보내기
  3. 저장 버튼을 클릭하면 실행되는 NewAnimalWindow에서 이벤트 만들기.
  4. 아마도 다른 많은 것 같습니다.
0

생성 된 개체에 대한 액세스를 허용하는 NewAnimalWindow의 속성으로 이동합니다.

MainWindow를

var animalWindow = new NewAnimalWindow(); 
animalWindow.ShowDialog(); 

if (animalWindow.DialogResult.HasValue && animalWindow.DialogResult.Value) 
{ 
    var createdAnimal = animalWindow.CreatedAnimal; 
    Animals.Add(createdAnimal); 
} 

당신이 중재자 패턴 및 화재 이벤트를 사용할 수 있습니다 ViewModels 작업하는 경우 또는

<Button IsDefault="True" Click="Button_OK_Click">Close</Button> 
    <Button IsCancel="True">Cancel</Button> 

private Animal _animal; 

public Animal CreatedAnimal 
{ 
    get 
    { 
    return _animal; 
    } 
} 

private void Button_OK_Click(object sender, RoutedEventArgs e) 
{ 
    DialogResult = true; 
} 

이 동물이 생성된다 NewAnimalWindow , 그래서 기본보기 모델을 목록에 추가 할 수 있습니다 ..

관련 문제