Windows Presentation Foundation或WPF是用于在基于Windows的应用程序中呈现用户界面的子系统。
我发现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");
我的应用程序中有一个窗口,这是一个小窗口,但 80% 是文本框。 我遇到的烦恼是,当我将鼠标悬停在文本框上时,光标保持为箭头,而我想要...
RelayCommand 未在 DataGridTextColumn WPF MVVM 内单击 MenuItem 时触发
我想在右键单击 EmpName 列上的“插入”菜单时添加新行,但它不会触发 InsertCommand。我在这里附上了 xaml 代码。请告诉我我在这里缺少什么。 我想在右键单击 EmpName 列上的“插入”菜单时添加新行,但它不会触发 InsertCommand。我在这里附上了 xaml 代码。请告诉我我在这里缺少什么。 <Window x:Class="DataGridRowsManagement.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:data="clr-namespace:DataGridRowsManagement" mc:Ignorable="d" Title="MainWindow" Height="450" Width="800"> <Window.Resources> <data:ViewModel x:Key="EmpVM"></data:ViewModel> </Window.Resources> <Grid DataContext="{Binding Source={StaticResource EmpVM}}"> <DataGrid AutoGenerateColumns="False" Height="287" HorizontalAlignment="Left" Margin="23,12,0,0" Name="dgEmp" VerticalAlignment="Top" Width="657" ItemsSource="{Binding Path=Employees}" ColumnWidth="*" SelectedIndex="{Binding Path=RecordIndex,Mode=TwoWay}"> <DataGrid.Columns> <DataGridTextColumn Header="EmpNo" Binding="{Binding EmpNo}" /> <DataGridTemplateColumn Header="EmpName"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <TextBlock Text="{Binding EmpName}" HorizontalAlignment="Stretch"> <TextBlock.ContextMenu> <ContextMenu DataContext="{Binding PlacementTarget.DataContext, RelativeSource={RelativeSource Self}}"> <MenuItem Command="{Binding InsertCommand}" CommandParameter="{Binding RecordIndex}" Header="Insert"/> <MenuItem Command="{Binding DeleteCommand}" CommandParameter="{Binding RecordIndex}" Header="Delete"/> </ContextMenu> </TextBlock.ContextMenu> </TextBlock> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> <DataGridTextColumn Header="Salary" Binding="{Binding Salary}" /> <DataGridTextColumn Header="Designation" Binding="{Binding Designation}" /> </DataGrid.Columns> </DataGrid> </Grid> </Window> 这些绑定位于 DataTemplate 内,因此它们将尝试绑定到要模板化的项目。 尝试下一个: <Window ... x:Name="ThisWindow" <MenuItem Command="{Binding DataContext.InsertCommand, ElementName=ThisWindow}" />
我有一个 WPF 应用程序,可以从 Azure 保管库收集机密。我已在 Azure 中创建了一个可以访问我的保管库的应用程序注册。为了获得保险库令牌,我需要存储应用程序注册表
为什么我的 Liveshare 合作伙伴看不到 Visual Studio 2022 上的 XAML 设计器?
如果我们尝试编写 WPF 应用程序并邀请我的朋友参加 LiveShare 会话,他只能看到 XAML 代码,而看不到设计器。其他一切都很好。 LiveShare 的其他一切都是...
为什么我的 Liveshare 合作伙伴看不到 Visual Studio 2022 上的 XAML 设计器?
如果我们尝试编写 WPF 应用程序并邀请我的朋友参加 LiveShare 会话,他只能看到 XAML 代码,而看不到设计器。其他一切都很好。 LiveShare 的其他一切都是...