【发布时间】: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 进行导航。