Windows Presentation Foundation或WPF是用于在基于Windows的应用程序中呈现用户界面的子系统。
我有一个包含多个配置文件的项目,我需要能够读取特定的配置文件(MyTest.exe.config)。 该文件如下所示: 我有一个包含多个配置文件的项目,我需要能够读取特定的配置文件(MyTest.exe.config)。 该文件如下所示: <appSettings> <add key="Setting1" value="1.1.1.1"/> <add key="Setting2" value="34567"/> <add key="Setting3" value="blue"/> <add key="Setting4" value="plastic"/> </appSettings> 读取它的代码如下所示: try { ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap(); fileMap.ExeConfigFilename = "MyTest.exe.config"; Configuration configFile = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None); var appSettings = configFile.AppSettings.Settings; if (appSettings.Count == 0) { Console.WriteLine("AppSettings is empty."); } else { foreach (var key in appSettings.AllKeys) { Console.WriteLine("Key: {0} Value: {1}", key, appSettings[key].ToString()); } } } catch (ConfigurationErrorsException) { Console.WriteLine("Error reading app settings"); } 但我只得到键而没有值 输出: Key: Setting1 Value: System.Configuration.KeyValueConfigurationElement Key: Setting2 Value: System.Configuration.KeyValueConfigurationElement Key: Setting3 Value: System.Configuration.KeyValueConfigurationElement Key: Setting4 Value: System.Configuration.KeyValueConfigurationElement 我也尝试一次获取一个值: try { String key = "Setting1"; ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap(); fileMap.ExeConfigFilename = "MyTest.exe.config"; Configuration configFile = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None); var appSettings = configFile.AppSettings.Settings; string result = appSettings[key].ToString(); Console.WriteLine(result); } catch (ConfigurationErrorsException) { Console.WriteLine("Error reading app settings"); } 但同样的事情 - 输出是: System.Configuration.KeyValueConfigurationElement 非常感谢任何帮助 也许你必须使用属性值: foreach (var key in appSettings.AllKeys) { Console.WriteLine("Key: {0} Value: {1}", key, appSettings[key].Value); } 之后,要获得价值,您必须使用: string result = appSettings[key].Value; 尝试并祝你好运
如何从 CommunityToolkit.Mvvm 绑定到 ObservableObject 中的 Task<T>?
CommunityToolkit.Mvvm 中的 ObservableObject 具有允许异步绑定到任务的 API(https://github.com/MicrosoftDocs/CommunityToolkit/blob/main/docs/mvvm/ObservableObject.md#
我目前正在学习 WPF 和 C# 编程,但我在理解绑定等方面遇到了困难。 我陷入了将函数或命令“绑定”到网格中的 XAML 对象的困境。 ...
我需要将 System.Drawing.Bitmap 转换为 System.Windows.Media.ImageSource 类,以便将其绑定到 WizardPage(扩展 WPF 工具包)的 HeaderImage 控件中。 位图设置为
我有一个 wpf 组合框,它绑定到我的视图模型中的 IEnumerable 集合。首次绑定组合框时,选择 null。当在组合框中选择任何其他值时,空值不可用...
我发现passwordreveal方法不适用于wpf中的密码框,有什么方法可以通过复选框显示和隐藏密码吗? 我希望显示/隐藏密码框中存在的功能...
我正在.NET框架上开发一个WPF项目,所以我无法使用System.IO.ZipFile`的最新程序集。这个问题看似微不足道,但却占用了我的时间。 我有这个任务: 公共异步任务
我有 WPF 窗口应用程序,我正在尝试弹出窗口并使用该窗口进行一些配置。因此,弹出窗口在英文 PC 中可以正确显示。但当我打开弹出窗口时你...
如何清除 WPF TreeView 中的 TreeView 选择?我尝试循环遍历 TreeNodes 并清除 IsSelected 属性,但这是一个只读属性。有任何想法吗?
用双精度存储十进制数?使用 updatesourcetrigger 作为 PropertyChanged 的属性
我正在使用WPF/MVVM。 我将 textbox.Text 绑定到视图模型中的可为空的双精度值。 UpdateSourceTrigger = PropertyChanged 而不是 Lostfocus。因此,当每次迪...
根据构建配置选择 XAML 文件(Visual Studio 2022、WPF)
使用 Visual Studio 2022、C#、WPF、.NET Framework 4.7.2 项目。 有没有什么方法可以在构建时选择 XAML 文件,例如基于构建配置或编译符号,或任何东西......
在我的WPF应用程序中有一个RichTextBox,通过在VS立即窗口中显示其文本内容,有一个带扬抑符的f字符,但在显示窗口中仅呈现
WPF Combobox 绑定和 SelectedValue 与 SelectedValuePath
我真的很挣扎于数据绑定和 MVVM 方法论,尽管我喜欢这个概念,但我只是在挣扎。我创建了一个 WPF,它有多个组合框和一个按钮。第一个合作...
Microsoft.AspNetCore.Components.WebView.Wpf 和 Microsoft.Web.WebView2.Wpf 有什么区别
我目前正在尝试使用 WPF 完成我的第一个 blazor 桌面应用程序。我唯一缺少的是 WindowStyle="none" WPF MainWindow 的拖动行为。 我发现了以下内容...
如何让屏幕阅读器以类似于读取 Win32 MessageBox 的方式读取我的 WPF 消息?
我们有一个 WPF 桌面应用程序,需要显示一些自定义消息窗口。我无法让屏幕阅读器(例如 Freedom Scientific 的 JAWS)正确朗读它们......
CurrentViewModel 属性更改未反映在 ContentControl 中
我目前正在构建一个应用程序,用户可以通过一组单选按钮选择不同的页面。当页面处于活动状态时,我希望单选按钮被检查为 true。当b...
我正在构建一个控件,用户可以在其中“绘制”覆盖在内容上的可调整大小的矩形。为了调整这些矩形的大小,我在它们上面使用了一个 Adorner,其中包含 4 个可以更改的 Thumbs...
我的数据库中有一个与序列化字节数组相对应的字符串。我希望能够修改该字符串中存在的字节并添加或删除其中的一些字节。 我正在转换我的字符串检索...
正如这个问题中所讨论的,我希望以下代码会产生两个相同的渐变: 正如这个问题中所讨论的那样,我希望以下代码会产生两个相同的looking渐变: <Border Background="Black"> <StackPanel> <Border x:Name="withOpacity" Height="32"> <Border.Background> <LinearGradientBrush StartPoint="0,0" EndPoint="1,0"> <GradientStop Offset="0" Color="#ff222222" /> <GradientStop Offset="1" Color="#33ff8000" /> </LinearGradientBrush> </Border.Background> </Border> <Border x:Name="withoutOpacity" Height="32"> <Border.Background> <LinearGradientBrush StartPoint="0,0" EndPoint="1,0"> <GradientStop Offset="0" Color="#ff222222" /> <GradientStop Offset="1" Color="#ff331a00" /> </LinearGradientBrush> </Border.Background> </Border> </StackPanel> </Border> 两个渐变的 visible 开始和结束颜色是相同的(在第二个渐变中,最终颜色是通过在给定的 #33 不透明度(即 20%)下将第一个渐变的结束颜色与黑色背景混合来计算的) )。不幸的是,插值非常不同: 上面链接的问题的公认答案解释了为什么会出现这种情况。我想知道是否有人能想到一种(编程)方法来在给定第一个梯度的输入值的情况下复制第二个梯度的插值。另外,我正在寻找渐变和彩色动画的解决方案。 我之前问题的回答者建议我可能只需要调整 alpha 分量的插值并且可以保留纯色值,但如果是这样的话,我还没有找到正确的算法......(由于最初的用例是动画,我在不透明度上尝试了各种缓动功能)经过一些实验,我也不再确定将不透明度与强度等同起来是否完全正确,就像该解释中的情况一样...... 请注意,我并不是(必然)寻找现成的解决方案,而是寻找有关如何解决最可能有价值的问题的建议。例如。创建 ColorAnimation 和 *GradientBrush 的自定义实现 vs 添加更明确的 GradientStops/关键帧 vs ...我还没想到的东西? 我探索这一点的原因是,我非常喜欢使用半透明颜色而不是预混合颜色,因为它将使渐变和动画独立于它们显示的背景(理想情况下,还包括非固体)彩色背景)。 由于您知道渐变透明度的百分比,因此您可以计算黑色百分比并导出第二种颜色。您可以将此计算交给值转换器来为您完成工作。您可能需要调整此计算以获得您想要的结果,但它应该会让您走上正确的道路。 以下是值转换器的样子: public class GradientNormalizer : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (!(value is Color color)) return value; var opacity = color.ScA; var r = color.ScR; var g = color.ScG; var b = color.ScB; var normalizedColor = new Color { ScA = 1, // since color is interpreted as approximately square ScR = r * opacity * opacity, ScG = g * opacity * opacity, ScB = b * opacity * opacity, }; return normalizedColor; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); } } 这是您在 xaml 中使用它的方式 <Border x:Name="withOpacity" Height="32"> <Border.Resources> <local:GradientNormalizer x:Key="Normalizer" /> </Border.Resources> <Border.Background> <LinearGradientBrush StartPoint="0,0" EndPoint="1,0"> <GradientStop Offset="0" Color="{Binding StartColor, Converter={StaticResource Normalizer}}" /> <GradientStop Offset="1" Color="{Binding EndColor, Converter={StaticResource Normalizer}}" /> </LinearGradientBrush> </Border.Background> </Border> 本例中的数据模型: public Color StartColor => (Color)ColorConverter.ConvertFromString("#ff222222"); public Color EndColor => (Color)ColorConverter.ConvertFromString("#33ff8000");