2017-02-22 1 views
0

저는 WPF에서 새롭고 요리 책과 같은 WPF 응용 프로그램을 만들고 싶습니다. 난 이미이 일을하고 애플 리케이션이 올바르게 작동합니다. 하지만 이렇게하면됩니다.하나의 창에 WPF 응용 프로그램이 있습니다.

첫 번째 화면에는 새로운 창을 열어 어떤 작업을 수행하는 버튼이 있습니다. 결과적으로 저는 14 개의 다른 창이 있습니다. 괜찮아요.하지만 지금은 다른 방식으로 만들고 싶습니다.

하나의 창을 만들려고합니다. 시작시 표시되고 내용이 변경됩니다. 나는 두 개의 격자로 창을 나눴다. 첫 번째는 정적이며 바닥에 배치됩니다. 여기에는 프로그램 기능을 나타내는 버튼이 있습니다. 두 번째는 역동적 일 것입니다. 나는 모든 창문의 내용을 보여주고 싶다. 그래서 새로운 창을 만드는 대신이 패널의 내용을 변경하고 싶습니다.

코드 숨김, 함수 및 데이터로 컨트롤을 생성 할 * .cs 파일을 만들려고했습니다. 그러나 내 생각은 성공하지 못하고 어떻게해야할지 모르겠다.

- "Add receip"버튼을 클릭하면 앱이 이름, 성분을 추가하고 마지막에 저장하는 컨트롤을 표시합니다. 은 - 당신이 CLIK 경우 "연락처보기 receip"이전 콘텐츠는 성분

나는 당신이 나를 이해 바랍니다 등

목록으로 대체됩니다.

+0

귀하의 질문은 서면으로 너무 광범위합니다. 프로그램, WPF 또는 다른 방법으로 동적 내용을 구현하는 많은 방법이 있습니다. 그리고 WPF에서는 WPF가 작동하도록 설계된 일반적인 MVVM 패러다임을 얼마나 잘 수행했는지에 대해 강하게 상관 관계가 있습니다 (더 잘 수행하면할수록 더 쉬울 것입니다). IMHO, 가장 쉬운 방법은 각 상태에 대한 뷰 모델 클래스가 다른 'DataTemplate'리소스로 표시하려는 각 상태에 대한 뷰를 만드는 것입니다.그런 다음'Content' 속성을 현재 상태에 대한 뷰 모델에 바인딩하는 'ContentControl'을 포함하십시오. –

+1

@PeterDuniho에 동의합니다. 이것은 너무 광범위합니다. 문제를 하나의 작은 다음 단계로 좁힐 수 있다면 특정 단계에 대한 도움을 얻을 수 있습니다. – pestophagous

+0

내 주요 문제는 컨트롤을 만들거나 다른 파일의 모든 컨트롤을 포함하는 패널을 만든 다음 메인 윈도우에 표시하는 것입니다. 예를 들어, 클래스 파일을 작성하면 모든 컨트롤이 작성되고 화면에 표시됩니다. –

답변

0

이 캔버스에 사용자 정의 컨트롤을 추가하는 예는 다음과 같이 btnAddSomething이 버튼을하자 및 btnAddSomething_Click는 다음과 같은 일을 할 수있는 자사의 클릭 이벤트가 될 것입니다. 프레임을 사용하면 프레임 자체에서 별도의 창이 아닌 페이지를 표시 할 수 있습니다. 프레임을 페이지로 이동하여

mainFrame.Source = new Uri("Page1.xaml",UriKind.Relative); 

이렇게하면 프레임이 페이지로 변경됩니다. 페이지를 다시 변경하려면 소스를 다시 변경할 수 있습니다.

참고 : "showReceip"와 같은 단추에 태그를 추가 할 수 있으며 단추에 대해 하나의 buttonclick 이벤트 만 만들 수 있습니다. 코드는 다음과 같습니다.

mainFrame.Source = new Uri((sender as Button).Tag.ToString() + ".xaml",UriKind.Relative); 

클릭 한 버튼의 태그를 사용하여 ".xaml"문자열을 추가하고 원본 부분에서 가져옵니다. 따라서 태그가 "Page1"인 경우 Source는 내 솔루션으로 "Page1.xaml"처럼 보입니다.

+0

나는 그것이 내가 원하는 것이다라고 생각한다 :) 고마워요! –

0

시도해 주셔서 감사 드리며, 별도의 Windows 대신 WPF user controls을 (를) 찾고 싶습니다. 사용자 정의 컨트롤은 사용자 정의 컨트롤에서 UI 및 기능을 만들 수있는 창과 비슷합니다. 나는 다음과 같이 메인 화면을 디자인 할 추천하고 싶습니다

<Grid> 
    <Canvas Name="canFunctionalButtons"> 
     <!--Define the buttons inside this canvas 
     And allocate proper place for this in the UI 
     --> 
    </Canvas> 

    <Canvas Name="canControlContainer"> 
     <!--This is to display the user control 
     Which can be changed dynamically according to the Button's click 
     --> 
    </Canvas> 
</Grid> 

그런 다음 당신은 canControlContainer 캔버스에 특정 사용자 컨트롤을 추가합니다 그 버튼에 대한 클릭 이벤트를 추가해야합니다. 대신 두 번째 그리드의 프레임을 만들 수 있습니다

private void btnAddSomething_Click(object sender, RoutedEventArgs e) 
{ 
    canControlContainer.Children.Clear(); // will remove previous contols from this canvas 
    // UC_AddSomething be the user control that you wanted to add here 
    canControlContainer.Children.Add(new UC_AddSomething()); 
} 
+0

그게 도움이 될 수 :) 나는 그것을 시도하지만 또한 모든 사용자 정의 컨트롤을 만드는 방법을 알고 싶습니다. 어디에서 모든 단추, 텍스트 상자 및 기타 코드 숨김 유지해야합니까? 내가 이해한다면, 캔버스를 변화시키는 공간 및 기능을 만들어야합니다. 하지만 어떻게 다른 파일 (클래스 파일, 페이지 파일 등) 에서이 컨트롤을 만들어야하는지 알고 싶습니다. 도움에 감사드립니다! :) –

관련 문제