2010-01-31 2 views
0

가난한 제목에 대해 사과 드리며, 다른 설명이 필요합니다.Sub Form을 C# WPF Project의 선택된 옵션을 기반으로 변경하십시오.

나는 this과 같은 인터페이스가 있습니다 (죄송합니다. 내가 새로운 이미지이므로 직접 게시 할 수 없습니다.).

그리고 왼쪽의 트리 선택을 기반으로 오른쪽 사이드 컨트롤을 표시하고 싶습니다. WPF 프로젝트에서이 작업을 수행하는 가장 쉬운 방법은 무엇입니까? 이 문제를 해결할 더 좋은 방법이 있습니까?

감사합니다.

답변

1

이상적으로 MVVM 디자인 패턴을 사용하면되지만,이 작업을 간단하고 쉽게 할 수있는 방법을 찾으려면 다음을 시도해보십시오. UserControls를 다른 하위 양식으로 만듭니다. 그것들을 프레임에 던지십시오. 그리드도 사용할 수 있지만 필요하면 프레임을 사용하여 네비게이션 (앞으로, 뒤로)을 사용할 수 있습니다.

<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="200"/> 
     <ColumnDefinition Width="5"/> 
     <ColumnDefinition/> 
    </Grid.ColumnDefinitions> 

    <GridSplitter Grid.Column="1" VerticalAlignment="Stretch" HorizontalAlignment="Right"/> 

    <!--TreeView Code Here--> 
    <TreeView x:Name="treeView" SelectedItemChanged="TreeView_SelectedItemChanged"> 
     <TreeViewItem Header="Devices" IsExpanded="True"> 
      <TreeViewItem Header="Device 1" Tag="UserControl1.xaml"/> 
      <TreeViewItem Header="Device 2" Tag="UserControl2.xaml"/> 
      <TreeViewItem Header="Device 3" Tag="UserControl3.xaml"/> 
     </TreeViewItem> 
     <TreeViewItem Header="Users" IsExpanded="True"> 
      <TreeViewItem Header="Add" Tag="UserControl4.xaml"/> 
      <TreeViewItem Header="Edit/Delete" Tag="UserControl5.xaml"/> 
     </TreeViewItem> 
    </TreeView> 

    <!--Frame to hold your subform (UserControl)--> 
    <Frame x:Name="SubForm" Grid.Column="2" NavigationUIVisibility="Hidden"/> 
</Grid> 

코드 숨김 :

private void TreeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e) 
{ 
    TreeViewItem item = (TreeViewItem)treeView.SelectedItem; 
    SubForm.Source = new Uri(item.Tag.ToString(), UriKind.RelativeOrAbsolute); 
} 
+0

답변 해 주셔서 감사합니다. 이것은 올바른 방향으로 나를 가리키며 몇 가지 옵션을 제공합니다. MVVM 디자인 패턴을 살펴볼 것입니다. - 건배! – Cam

0

당신은 MDI 양식을 사용합니다. 당신의 treeview 컨트롤러를 추가하십시오. treeview 이벤트 처리기에서 선택한 항목을 기반으로 하위 양식을 표시 할 수 있습니다. 하위 폼의 "MdiParent"속성을 MDI 형식으로 설정하십시오.

관련 문제