2014-12-18 3 views
2

저는 첫 번째 WPF를 개발하려고합니다.WPF 응용 프로그램에서 동적으로 버튼 목록 만들기

버튼 목록을 가져오고 싶습니다. 버튼은 WPF의 맨 위에있는 "추가"버튼으로 생성됩니다.

그래서 "추가"를 누르면 새 버튼이 목록에 나타납니다.

먼저 목록을 만드는 방법은 무엇입니까? ListBox 또는 StackPanel을 사용합니까? 나는 StackPanel이 좋을 것이라고 생각하지만 거기에 버튼을 추가하는 방법에 대해서는 확실하지 않다.

그리고 다른 질문 : 일반적으로, 나는 (자바에서 온) 객체를 생성 할 때 각 객체는 고유 한 예. 그러나 모든 버튼에 고유 한 이름을 부여하는 방법은 무엇입니까?

도와주세요.

+1

WPF는 제대로하고 싶다면 약간 까다로울 수 있습니다. StackOverflow는 이러한 광범위한 질문에 적합한 형식이 아니라는 점에서 좋은 책을 얻으시기 바랍니다. – nvoigt

+0

질문의 범위를 좁히고 결점을 분명히 나타내는 코드를 보여주십시오. 안부 인사, –

+0

고마워요 - 책은 이미 주문되었고 금요일에 내 사서함에 있기를 바랍니다. – sibe94

답변

11

중지하십시오. 지금.

을하기 전에 기본 MVVM을 배우십시오. WPF는 이 아니며이 아닙니다. WinForms (또는 해당 Java 버전). 언제 UI를 변경해야 하는지를 알기 전까지는 프로그래밍 방식으로 UI를 변경하면 안됩니다.

해당 버튼은 데이터을 나타내야합니다. 그 데이터는 어딘가에 뷰 모델에 있어야합니다. 그럼 당신은이 같은 ItemsControl있을 것입니다 :

<ItemsControl ItemsSource="{Binding MyCollection}"> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <Button ... /> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

지금 당신은 당신이 바인딩 된 오브젝트 (고유 한 이름 필요 없음)에 따라 필요한 모든 고유 정보를 얻을 수 있습니다. ItemsControlStackPanel을 기본 패널로 사용하도록 설정할 수도 있습니다 (단, 이는 기본적으로 기본값 임).

+0

나는 @BradleyDotNET에 동의 할 것입니다 - 당신은 WPF 응용 프로그램 개발자에게 적합한 다른 소프트웨어 패러다임을 고수해야합니다. 감사합니다, –

+0

downvoter 신경을 써주시겠습니까? – BradleyDotNET

+0

현재 임씨는 당신을 100 % 이해하지 못하고 있습니다. 당신의 예제는 생성 된 버튼을위한 템플릿과 같은가요? – sibe94

1

동적 동작이 필요하며 이것이 첫 번째 WPF 응용 프로그램이므로이 코드는 코드 뒤에 작성해야합니다.

StackPanel의 이름을 지정하고 (이름 속성을 추가) 버튼의 클릭 이벤트를 처리하십시오 (WPF 비주얼 편집기에서 버튼을 두 번 클릭하기 만하면됩니다). 클릭 이벤트의 핸들러 내부

, 당신은 같은 것을 할 수있다 : 물론

this.MyStackPanel.Children.Add(new Button()); 

, 그 버튼에 동작을 추가하기를, 당신은 변수에 할당하고 적절한 이벤트 핸들러를 추가 할 수 있습니다.

+0

이것이 첫 번째 WPF 앱이므로이 작업을 수행하는 올바른 방법을 배우십시오. 허락하신다면, 이것은 좋은 생각이 아닙니다. – BradleyDotNET

+0

'ItemsControl'은 wpf의 고급 주제인데, 초보자가 완전히 이해할 수 있을지 확신하지는 않습니다. –

+2

@BradleyDotNET, 물론 의견의 문제입니다. 그러나 WPF는 가파른 학습 곡선을 가지고 있으며, MVVM과 섞여서 OP가 아무 것도 할 수 없게되기까지 몇 주가 될 수 있습니다. 작은 단계로 배우는 것이 좋습니다. –

관련 문제