2013-09-29 2 views
0

저는 WPF에 처음 접했고 약간의 지식을 얻기 위해 기본적으로 몇 가지 클래스를 삽입 할 수있는 매우 간단한 UML 모델링 프로그램을 만들기로했습니다. 캔버스, 그들을 연결하고 주위를 이동합니다.WPF에서 모델링 프로그램 용 확장 격자

질문 : 저는 캔버스에 놓은 클래스를 userControl I 디자인으로 만드는 것에 대해 생각해 왔습니다. 내 마음 속에는 속성, 속성 등을 나타내는 일부 텍스트 상자가있는 Grid와 같은 것이 될 것입니다. 실제 질문은 내 아이디어가 가능한가 아니면 완전히 다른 무언가와 함께 가야 하는가? 내 관심사는 바로 지금부터 그리드를 구현하여 그리드를 구현하고자 할 때 오른쪽 표제 아래에 (행 추가) 그리드를 구현하는 방법입니다 (속성/속성 ..).

내 질문을 이해하고 내가 생각한 방식을 계속 구현해야하는지 또는 다른 방법을 사용하여 아이디어를 전달해 줄 수 있기를 바랍니다.

+0

[내 사례] (http://stackoverflow.com/questions/15819318/how-to-create-and-connect-custom-user-buttons-controls-with-lines-using-windows)를 확인하십시오./15821573 # 15821573)와 비슷한 것을 말합니다. –

+0

나는 당신의 예제가 마음에 든다. 나는 콤보 박스를 사용해야한다고 생각하고, 그 안에 몇 가지 listView를 가지고, 필요한 속성, 속성 등등을 포함하고있다. :) –

답변

1

당신은 아마도이 같은 확장기는 뭔가, ListView 컨트롤을 고려하실 수 있습니다 : 주어진 최대까지 필요한

<Canvas> 
    <Expander Header="Stuff" 
       MaxHeight="900" 
       Canvas.Left="202" 
       Canvas.Top="110"> 
     <ListView Name="MyListView"> 
      <ListView.ContextMenu> 
       <ContextMenu> 
        <MenuItem Header="Add new thing" 
           Click="MenuItem_Click" /> 
       </ContextMenu> 
      </ListView.ContextMenu> 
      <ListViewItem> 
       <StackPanel Orientation="Horizontal"> 
        <Label>Name</Label> 
        <TextBox Text="Value" /> 
       </StackPanel> 
      </ListViewItem> 
      <ListViewItem>Item two</ListViewItem> 
      <ListViewItem>Item three</ListViewItem> 
     </ListView> 
    </Expander> 
</Canvas> 

이 의지 크기로. 목록보기 항목에는 위에서 볼 수있는 것처럼 텍스트가 아닌 모든 종류의 내용이 포함될 수 있습니다. 스타일 및 제어 템플릿에 대해 조금 배우고 싶을 것입니다. WPF는 IMHO가 다소 가파른 학습 곡선을 가지고 있지만 웹에 많은 학습 리소스가 있습니다. 행운을 빕니다.

귀하의 의견에 대한 답변으로 추가 정보를 추가하려고합니다.

XAML에서 수행 할 수있는 모든 작업은 코드 숨김 작업에서 수행 할 수 있습니다 (대부분 XAML이 프레임 워크 개체를 호출합니다). 이 경우 ListView 컨트롤에 컨텍스트 메뉴를 추가했습니다. 이 메뉴에는 "새 항목 추가"항목이 있습니다. 코드 숨김에서 MenuItem_Click 메서드에 바인딩 된이 항목에 대한 Click 이벤트가 있습니다. 당신이 바로 ListView를 클릭하면 이제 "새로운 일을 추가"메뉴 선택을 볼 수

void MenuItem_Click(object sender, RoutedEventArgs e) { 
     var lvi = new ListViewItem(); 
     lvi.Content = String.Format("New thing {0}", DateTime.Now); 
     MyListView.Items.Add(lvi); 
     } 

그것을리스트 뷰 (프로그램)에 새 ListViewItem이 추가 클릭 왼쪽 : 나는 다음 코드에이 방법을 추가했다.

+0

좋아,이게 작동 할 수있다. 그러나 문제가 있다고 생각합니다. 내가 얼마나 많은 ListViewItems가 동적으로 할당하고 싶습니다 ... 내가 캔버스에 상자를 그릴 때, 그것은 비어 있어야하고, 그때 내가 버튼을 누르면, 오른쪽 제목 아래에 항목을 추가해야합니다 .. 나는 돈 ' 위의 설정에서 어떻게 작동하는지보십시오. –