簡體   English   中英

窗口C#/ WPF中的動態內容

[英]Dynamic content in a window C#/WPF

我需要制作一個只有一個窗口的應用程序,然后單擊按鈕即可更改窗口的內容。

我不知道該怎么做。 我考慮使用用戶控件,但我認為這不是最好的方法。 也許帶有選項卡,但它不會尊重我想要的UI。 那么最好的存檔方式是什么? WPF窗口上的動態內容(當然,我將需要通過差異視圖傳遞數據和變量)

這是我要執行的UI的“示例”。 請問,如果不好的話,我會盡快完成:)

UI示例

MVVM明智的做法是,每個頁面都需要不同的視圖(每個視圖都需要一些基類)。 因此, UserControl是必經之路。

但是,可以對帶有折疊標題的多個頁面使用TabControl

    <TabControl>
        <TabItem Visibility="Collapsed">
            <Label Content="First page"/>
        </TabItem>
        <TabItem Visibility="Collapsed">
            <Label Content="Second page"/>
        </TabItem>
    </TabControl>

要編輯特定頁面,請在設計器中選擇相應的項目,然后可以查看其內容。

對於按鈕,您將需要一個特殊的區域(因為按鈕在頁面之間是通用的)。 這樣您的窗口將包含像

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
    <Image Grid.Row="0" Stretch="None" HorizontalAlignment="Left" VerticalAlignment="Top" Source="logo.png"/>
    <TabControl Grid.Row="1" SelectedIndex="{Binding Page}">
        ... tab items
    </TabControl>
    <StackPanel Grid.Row="2" Orientation="Horizontal" FlowDirection="RightToLeft">
        <Button Command="{Binding CommandFinish}" Content="Finish"/>
        <Button Command="{Binding CommandNext}" Content="Next"/>
        <Button Command="{Binding CommandPrevious}" Content="Previous"/>
        ... and so on, from right to left
    </StackPanel>
</Grid>

要至少利用MVVM,您可以有頁碼,這樣您的ViewModel可以知道總共必須有多少頁,以及每頁可以做什么(以控制按鈕的可見性和導航)。

您提供的圖像看起來像一個典型的向導。 Extended WPF Toolkit已隨附向導。 而且它是完全免費的。 我建議您至少看看它。 它允許您將任何種類的內容應用於任何頁面。 向導本身的行為也可以修改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM