【问题标题】:A small responsive WPF Application with several pages具有多个页面的小型响应式 WPF 应用程序
【发布时间】:2021-06-18 10:40:53
【问题描述】:

我几天前开始学习 C#,但遇到了 WPF 的一些问题。

目前我正在尝试创建一个接收文本文件并分析内容的小型 WPF 应用程序。我已经开发了用于执行分析的类,但我对 GUI 有一些问题。此外,我昨天已经在 Windows 窗体上开发了相同的应用程序,但现在相同的应用程序(代码已调整为 WPF 标准)在 WPF 中无法正常工作。

表单的不同“页面”在面板中分开。

启动应用程序后,窗口会显示一个文本和一个按钮。此按钮打开一个文件对话框并允许用户从他的计算机中选择一个文本文件。之后开始分析。整个过程由后台工作人员完成,以保持 GUI 响应。现在,当出现带有进度条和几个按钮的新页面时,没有任何反应或无法正常工作。 我将以前的currentPanel.Visibility = Visibility.Hidden 和新面板设置为nextPanel.Visibility = Visibility.Visible

我做错了什么?是否有更好的解决方案来显示不同的“页面”?

提前致谢!

编辑: XAML 代码

    <Grid Margin="0,0,0,-6">
        <WrapPanel x:Name="StartPanel" VerticalAlignment="Center" HorizontalAlignment="Center" Height="Auto" Orientation="Vertical" Visibility="Visible">
            <Label x:Name="StartLabel" Content="Word-Counter" RenderTransformOrigin="-0.339,0.349" FontSize="24" Tag="START" Height="60" HorizontalAlignment="Center" VerticalAlignment="Center"/>
            <Label x:Name="StartSubText" Content="Hier werden Wörter aus deiner Text-Datei gezählt." HorizontalAlignment="Center" VerticalAlignment="Center" RenderTransformOrigin="-0.339,0.349" FontSize="14" Tag="START" Margin="0,50,0,0"/>
            <Button x:Name="StartBtn" Content="START" HorizontalAlignment="Center" VerticalAlignment="Center" RenderTransformOrigin="0.284,14.135" Width="80" Height="25" FontSize="16" Click="StartBtn_Click" Tag="START" Margin="0,100,0,0"/>
        </WrapPanel>
        <Canvas x:Name="ProcessPanel" Visibility="Hidden" HorizontalAlignment="Center" VerticalAlignment="Center"  Width="800">
            <ProgressBar x:Name="LoadingBar" Height="25" Width="500" Margin="0,182,0,233" Tag="DOING, FINISHED_LOADING" Panel.ZIndex="2" Canvas.Left="150" Canvas.Top="-192" Visibility="Hidden"/>
            <Label x:Name="ProgressText" Content=" " FontSize="15" Margin="150,207,0,0" Tag="DOING, FINISHED LOADING" Panel.ZIndex="2" RenderTransformOrigin="1.168,-5.374" Canvas.Top="-192" Visibility="Hidden"/>

            <WrapPanel x:Name="DoingProcessPanel" Width="800" Canvas.Top="-219" Height="432" Visibility="Visible" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
                <Button x:Name="CancelProcessBtn" Content="Abbrechen" HorizontalAlignment="Left" VerticalAlignment="Top" Width="60" Height="20" Margin="661,365,0,0" Tag="DOING" Visibility="Visible" Click="CancelProcessBtn_Click_1"/>
            </WrapPanel>
            <WrapPanel x:Name="FinishedProcessPanel" Width="800" Canvas.Top="-219" Height="432" Visibility="Visible">
                <Button x:Name="ShowResultsBtn" Content="Anzeigen" HorizontalAlignment="Left" VerticalAlignment="Top" Width="60" Height="20" Margin="661,365,0,0" Tag="FINISHED_LOADING" Visibility="Visible" Click="ShowResultsBtn_Click_1"/>
                <Button x:Name="DiscardBtn" Content="Verwerfen" HorizontalAlignment="Left" VerticalAlignment="Top" Width="60" Height="20" Margin="-150,365,0,0" Tag="FINISHED_LOADING" Visibility="Visible" Click="DiscardBtn_Click_1"/>
            </WrapPanel>
        </Canvas>
        <StackPanel x:Name="ResultsPanel"  Visibility="Hidden">
            <DataGrid x:Name="dataGrid" Tag="RESULTS" Margin="0,0,694,10" Visibility="Visible">
                <DataGrid.Columns>
                    <DataGridTextColumn Header="Wort" HeaderStringFormat="Wort"/>
                    <DataGridTextColumn Header="Anzahl" HeaderStringFormat="Anzahl"/>
                </DataGrid.Columns>
            </DataGrid>
            <Button x:Name="FinishedBtn" Content="Zum Start" HorizontalAlignment="Left" VerticalAlignment="Top" Width="60" Height="20" Margin="661,365,0,0" Tag="RESULTS" Click="FinishedBtn_Click"/>
        </StackPanel>
    </Grid>

【问题讨论】:

  • 您必须实际发布一些 xaml 以供人们提示您做错了什么。通常,在 wpf 中人们要么使用 Datatemplates、Usercontrols、ContentPresenters 或 Pages 进行导航。

标签: c# wpf


【解决方案1】:

不知道是否是拼写错误,没有尝试过代码(目前没有使用 WPF 进行测试),但您说要更改 currentPanel.Visibility = Visibility.Hidden 但在您的代码示例中,您有一个不同的名字 Canvas x:Name="ProcessPanel" Visibility="Hidden"

您能检查一下您尝试显示的元素是否是正确的名称/id 吗?

注意:我使用的一个小技巧是更改元素的颜色而不是可见性,因为它更易于调试。示例here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-13
    • 1970-01-01
    • 1970-01-01
    • 2010-09-26
    • 1970-01-01
    相关资源
    最近更新 更多