2017-02-22 67 views
0

我是WPF中的新成員,並且想要創建像cookbook一樣的WPF應用程序。我已經完成了這個和應用程序正常工作。但我這樣做:在一個窗口中的WPF應用程序

第一個屏幕顯示按鈕,它打開新窗口做某事。結果我有14個不同的窗口。沒關係,但現在我想以其他方式製作。

我想製作一個窗口,它將在開始時顯示,並更改內容。我把窗口分成兩個網格。首先是靜態的,放在底部。它包含代表程序功能的按鈕。第二個將是動態的。在那裏我想顯示每個窗口的內容。所以我想改變這個面板的內容而不是創建新的窗口。

我試圖製作* .cs文件,它將在代碼隱藏,函數和數據中創建控件。但我的想法是不成功的,我不知道如何做到這一點。

總之,我想創建應用程序,它的工作原理是這樣的: - 如果點擊「添加收據」按鈕,則應用程序將顯示控件以添加名稱,成分並將其保存到最後。 - 如果你短聲「顯示receip」以前的內容將被成份

我希望你能理解我的列表所替換。

+0

你的問題與書面一樣寬泛。有許多方法可以在程序,WPF或其他方式中實現動態內容。而在WPF中,這種困難與你遵循WPF設計的正常MVVM範式(你做得越好,越容易)的相關性也很相關。恕我直言,最簡單的方法是爲每個想要呈現的狀態創建視圖,作爲'DataTemplate'資源,併爲每個狀態提供不同的視圖模型類。然後只包含一個ContentControl,其中Content屬性綁定到當前狀態的視圖模型。 –

+1

我同意@PeterDuniho - 這太寬泛了。如果您可以將問題縮小到下一個小步驟,那麼您可能會在該特定步驟中獲得幫助。 – pestophagous

+0

我的主要問題是創建控件,或與其他文件中的所有控件面板,然後在主窗口中顯示它。例如,創建類文件,該文件將創建所有控件,然後將其顯示在屏幕上。 –

回答

0

您可以創建一個框架,而不是第二個網格。 Frame允許您在Frame中顯示頁面,而不是在單獨的窗口中。您可以將框架導航到頁面中,如

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

欣賞嘗試,我希望你正在尋找WPF user controls而不是單獨的窗口。用戶控件與Windows相似,可以在用戶控件中創建用戶界面和功能。我想推薦你設計的主窗口如下所示:

<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畫布。添加一個用戶控件這個畫布的例子如下,讓btnAddSomething是一個按鈕,btnAddSomething_Click是其click事件,那麼你可以這樣做:

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

這可能會有所幫助:)我會嘗試一下,但我也想知道如何創建每個用戶控件。我應該在哪裏保留所有按鈕,文本框和其他代碼?如果我明白了,我需要創建一個改變畫布的dinamically空間和功能。但我想知道如何從其他文件(類文件,頁面文件等)創建此控件感謝您的幫助! :) –

相關問題