2012-10-04 1 views
2

저는 WPF의 초보자입니다. MVVM 패턴을 따르고 있습니다. 내 목록에 항목 목록이있는 목록 상자가 있습니다. 또한 시작할 때 비어있는 표가 있습니다. 이제 여기에 쿼리가 있습니다. 목록 상자에서 항목을 선택할 때 도구 상자를 사용하는 대신 레이블, 버튼, 확인란 및 텍스트 상자를 동적으로 생성하려고합니다.WPF App에서 레이블, 버튼, 확인란 및 텍스트 상자를 동적으로 생성하는 방법

옵니다 MainWindow를에 & 그리드 :

<ListBox Name="ButtonPanel" ItemsSource="{Binding BoardTabs}" SelectedItem="{Binding SelectedTab, Mode=TwoWay}" > 
     <ListBox.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Horizontal"> 
       <Button Margin="0,27,0,0" Content="{Binding TabName}" /> 
      </StackPanel> 
     </DataTemplate> 
     </ListBox.ItemTemplate> 
</ListBox> 

<Grid Height="461" HorizontalAlignment="Left" Margin="139,0,0,0" Name="grid1" VerticalAlignment="Top" Width="339" > 

</Grid> 

TABNAME 내 모델 클래스의 부분 문자열입니다.

뷰 모델 클래스 :

public List<Product> m_BoardTabs; 
public ProductViewModel() 
{  
    m_BoardTabs = new List<Product>() 
    { 
     new Product() {TabName = "A"}, 
     new Product() {TabName = "B"}, 
     new Product() {TabName = "C"},    
    }; 
}      

public List<Product> BoardTabs 
{ 
    get 
    { 
     return m_BoardTabs; 
    } 

    set 
    { 
     m_BoardTabs = value; 
    } 
} 

private Product m_SelectedItem; 
public Product SelectedTab 
{ 
    get 
    { 
     return m_SelectedItem; 
    } 

    set 
    { 
     m_SelectedItem = value;     
     NotifyPropertyChanged("SelectedTab"); 
    } 
}  

데모 :

목록 상자는 3 개 항목이 있습니다. A, B, C

내 표에서 A를 선택하면 L1, L2, L3을 스택 순서로 표시하려고합니다. B1, B2, B3 스택 순서 C1, C2, C3 및 T1, T2, T3 등등. L은 레이블, B는 버튼, T는 텍스트 상자, C는 확인란입니다.

내 표에서 B를 선택하면 L5, L6, L7을 스택 순서로 표시하려고합니다. C5, C6, C7 및 T5, T6, T7 등등의 순서로 B5, B6, B7을 사용합니다. 여기서 L은 레이블, B는 버튼, T는 텍스트 상자, C는 확인란입니다.

C를 선택하는 것과 같습니다. 도구 상자를 사용하여 응용 프로그램에서 레이블을 쉽게 만들 수 있지만.

목록 상자에서 선택한 항목을 기반으로 그리드 내부에서 생성 할 수있는 방법이 있습니까?

+0

L1, B1, C1, T1은 모델과 관련이 있습니까? (그들이 말하는 내용) – HichemSeeSharp

+0

아니요. 확실하지 않습니다. 이러한 UI 구성 요소의 자동 생성은 내가하는 방법을 알고 싶습니다. 툴박스를 사용하지만 동적으로 생성되는 implementatin은 내가 힘이 없다는 것을 알고 있지만 – StonedJesus

답변

1

예.

원하는 컨트롤의 구조를 정의 할 수있는 각각의 경우에 대해 DataTemplates이 필요하고 Grid의 실제 템플릿을 설정하는 데 DataTemplateSelector이 필요합니다.

더 찾기 here

+0

Balogh : 감사합니다. 다른 코드/데모 앱이 나를 도울 수 있습니까? – StonedJesus

+0

많이 있습니다. 당신은 쉽게 Google 덕분에 그것을 찾을 수 있습니다 :) –

+0

물론입니다. 감사합니다 ur 도움 :) – StonedJesus