Windows Presentation Foundation或WPF是用于在基于Windows的应用程序中呈现用户界面的子系统。
我正在开发一个 Visual Studio 扩展,使用 CrispImage UIElement 和此处的名字功能。然而,尽管在运行时显示,但它们在设计时并不显示。还在
我正在尝试在 WPF 中创建一个软件,该软件托管浏览器(WebView2 当前为 1.0.818.41),并且当浏览器中有一个输入字段时,还会显示 OnScreenKeyboard。 我已经做到了这一点...
我是一个javascript新手。我主要用 C# 编写代码,所以我对此很陌生。 我正在尝试将 PowerBI 嵌入式报表嵌入到 WPF 应用程序中。我可以做到这一点,我有报告显示
我想知道是否可以一次将一个实体添加到多个窗口。一个例子是我有 3 个弹出窗口用于不同类型的培训。我扫描自己(条形码)和
ScrollViewer 无法与 GroupBox 上的 MouseWheel 配合使用
我正在尝试让滚动查看器在自定义样式的组框中工作。 这是组框的样式: 我正在尝试让滚动查看器在自定义样式的组框中工作。 这是组框的样式: <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <!--Set default style of groupbox--> <Style TargetType="GroupBox"> <Setter Property="Margin" Value="0, 10, 0, 0"></Setter> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="GroupBox"> <Border CornerRadius="4" BorderThickness="1" BorderBrush="{StaticResource BorderBrush}" Background="{StaticResource ContentBackgroundBrush}"> <ScrollViewer HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto"> <StackPanel Orientation="Vertical" CanVerticallyScroll="True"> <Label Content="{TemplateBinding Header}" Margin="5,5,0,0" Style="{StaticResource SmallTitle}"></Label> <ContentPresenter Margin="10, 5, 10, 10" RecognizesAccessKey="True" x:Name="CtlGroupboxPresenter" /> </StackPanel> </ScrollViewer> </Border> </ControlTemplate> </Setter.Value> </Setter> </Style> 出现了滚动条,但无法使用鼠标滚轮滚动。但是,当我的鼠标悬停在垂直滚动条上时,它会起作用。这似乎是一个跟踪问题。 我看到一些人建议在代码后面添加一些代码以使其正常工作,但由于这是在资源字典中,所以我没有地方可以放置它...... 有谁知道是什么问题吗? 这是 wpf 表单的图像: 组框内的 XAML: <UserControl x:Class="Sun.Plasma.Controls.ViewNews" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"> <DockPanel LastChildFill="True"> <Label DockPanel.Dock="Top" Style="{StaticResource LblTitle}" FontWeight="Bold" FontSize="24" >Latest SUN news & announcements</Label> <StackPanel Orientation="Vertical" VerticalAlignment="Stretch"> <StackPanel Orientation="Vertical" Name="CtlLoadingNews"> <Label Style="{StaticResource LblContent}">Loading content from server...</Label> <ProgressBar IsIndeterminate="True" Height="30" /> </StackPanel> <ListView Background="Transparent" DockPanel.Dock="Bottom" ItemsSource="{Binding NewsFeeds}" BorderBrush="Transparent" Name="CtlNews" Visibility="Collapsed"> <!-- Defining these resources prevents the items from appearing as selectable --> <ListView.Resources> <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent" /> <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Black" /> <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent" /> </ListView.Resources> <ListView.ItemTemplate> <DataTemplate> <StackPanel Orientation="Vertical" Margin="0 0 0 20"> <Label Style="{StaticResource LblTitle}" FontWeight="Bold" Content="{Binding Title}" /> <StackPanel Orientation="Horizontal"> <Label Style="{StaticResource LblFooter}" Content="{Binding PublishDate}" /> <Label Style="{StaticResource LblFooter}">By</Label> <Label Style="{StaticResource LblFooter}" Content="{Binding Authors[0]}" /> <Label Style="{StaticResource LblFooter}"> <Hyperlink RequestNavigate="Hyperlink_RequestNavigate" NavigateUri="{Binding Source}">Read entry</Hyperlink> </Label> </StackPanel> </StackPanel> </DataTemplate> </ListView.ItemTemplate> </ListView> </StackPanel> </DockPanel> 问题在于,ListView内容中的GroupBox阻止了MouseWheel事件冒泡到ScrollViewer。我找到了一个 hacky 解决方案: 您可以处理内部 PreviewMouseWheel 上的 ListView 事件,并直接在滚动查看器上引发 MouseWheel 事件。 private void ListView_PreviewMouseWheel(object sender, MouseWheelEventArgs e) { if (!e.Handled) { e.Handled = true; var eventArg = new MouseWheelEventArgs(e.MouseDevice, e.Timestamp, e.Delta); eventArg.RoutedEvent = UIElement.MouseWheelEvent; eventArg.Source = sender; //navigate to the containing scrollbar and raise the MouseWheel event (((sender as ListView).Parent as GroupBox).Content as ListView).RaiseEvent(eventArg); } } 再次强调,这不是我特别喜欢的解决方案,因为它依赖于 GroupBox 的布局。 第二种稍微好一点的方法是向 GroupBox 的资源添加样式,在其中向 PreviewMouseWheel 事件添加处理程序: <GroupBox Header="test"> <GroupBox.Resources> <Style TargetType="ScrollViewer"> <EventSetter Event="PreviewMouseWheel" Handler="ScrollViewer_PreviewMouseWheel" /> </Style> </GroupBox.Resources> <!-- your contents --> </GroupBox> 事件处理程序然后执行滚动: private void ScrollViewer_PreviewMouseWheel(object sender, MouseWheelEventArgs e) { var scrollViewer = sender as ScrollViewer; double change = e.Delta; double currentPosition = scrollViewer.VerticalOffset; scrollViewer.ScrollToVerticalOffset(currentPosition - change); } 受到@Domysee的启发,但我的事件不是由滚动查看器触发的,可能是因为布局不同 XAML: <GroupBox Header="Services"> <Grid PreviewMouseWheel="OnScroll"> <ScrollViewer x:Name="_scrollViewer" VerticalScrollBarVisibility="Auto"> <StackPanel Orientation="Vertical"> <ScrollViewer VerticalScrollBarVisibility="Auto"> <ItemsControl ItemsSource="{Binding Services}"> <ItemsControl.ItemsPanel> <ItemsPanelTemplate> <UniformGrid Columns="2" /> </ItemsPanelTemplate> </ItemsControl.ItemsPanel> </ItemsControl> </ScrollViewer> <Button Width="50" HorizontalAlignment="Left" Command="{Binding NewServiceCommand}" Content="+" /> </StackPanel> </ScrollViewer> <Grid <!-- overlay goes here --> </Grid> </Grid> </GroupBox> 背后代码: private void OnScroll(object sender, MouseWheelEventArgs e) { double change = e.Delta; double currentPosition = _scrollViewer.VerticalOffset; _scrollViewer.ScrollToVerticalOffset(currentPosition - change); }
如何在WPF TabControl中为选定的tabItem添加下划线
问题 我正在开发一个 WPF 项目,需要有关设置 TabControl 样式的帮助。 我的主窗口的标题左侧有一个标签,右侧有一个 TabControl,包含三个 TabItem...
在这里,我想以某种方式设置列表框项目的样式,即向某些项目添加一点斜体注释,如下图所示。 让我接近的是使用内联项目列表作为 ItemsSo...
System.InvalidOperationException 发生在我的 WPF 应用程序中
我正在按照 MVVM 模式编写 WPF 应用程序,我的视图中有 DataGrid。我还有 4 个文本框、1 个组合框和一个用于将新实体添加到 DataGrid 的按钮。我正在使用实体框架...
WPF 绑定到 DataTemplate 中的 ElementName 有效,但在 Style Setter 中无效
谁能告诉我为什么这段代码: ...
WPF XAML,在 ResourceDictionary 中重新使用颜色/实体画笔
我的 WPF C# 应用程序中有一些颜色,我想重复使用它们。避免重复输入(和维护问题)。 我的 WPF C# 应用程序中有一些颜色,我想重复使用它们。避免重复输入(和维护问题)。 <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <SolidColorBrush x:Key="mybackground">#ffffff</SolidColorBrush> <SolidColorBrush x:Key="myforeground">#000000</SolidColorBrush> <SolidColorBrush x:Key="HeaderBackground">#000000</SolidColorBrush> <SolidColorBrush x:Key="HeaderForeground">#ffffff</SolidColorBrush> </ResourceDictionary> 如何在其他画笔中重复使用 mybackground 或 myforeground? <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <SolidColorBrush x:Key="mybackground">#ffffff</SolidColorBrush> <SolidColorBrush x:Key="myforeground">#000000</SolidColorBrush> <SolidColorBrush x:Key="HeaderBackground">{StaticResource myforeground}/SolidColorBrush> <SolidColorBrush x:Key="HeaderForeground">{StaticResource mybackground}/SolidColorBrush> </ResourceDictionary> 提示:标题使用切换到主要内容的前景色和背景色。 我也尝试过类似的东西: <SolidColorBrush x:Key="HeaderBackground" Color="{StaticResource myforeground}"></SolidColorBrush> <SolidColorBrush x:Key="HeaderForeground" Color="{StaticResource mybackground}"></SolidColorBrush> 但在这里我得到了明显的警告incompatible type。 如果要重用颜色,请将 Color 定义为资源: <Color x:Key="red">#FF0000</Color> <SolidColorBrush x:Key="ErrorBrush" Color="{StaticResource red}"/>
如何使 ObservableObject 派生类的更改自动反映到接口中?
我在 WPF 程序中使用 CommunityToolkit 中的 ObservableObject。它看起来像这样: 我认为它就像一个 ViewModel: 公共类 MyParameters:ObservableObject { // 他还有许多其他值...
同时使用scrollviewer和richtextbox时,它在WPF中逐行写入文本中的字母
我想将文本框中的文本打印到richtextboxes中,并在覆盖网格时出现滚动条。当您同时使用richtextbox和scrollviewer时,...
dotnet 构建不适用于 1 个 WPF 项目,但所有其他项目都可以
我遇到了 dotnet-cli 的问题。和 WPF,当我右键单击解决方案并选择构建时,它每次都会起作用。没有问题,但是当我打开 Developer Powershell 并输入 dotnet build 时却没有问题
如何创建一个根据窗口高度缩放且不受系统 dpi 缩放影响的 WPF 应用程序?
我正在使用 WPF 作为 UI 使用 C# 创建工业过程监视和控制应用程序。该应用程序全屏运行,并将部署在具有
我正在从事 WPF 应用程序开发。我们的对话框之一有一个 DataGrid。此 DataGrid 应显示有关某些 3D 点的信息。对于这一点,我们有一个 PointViewModel 类,有 4 个要求...
C# WPF - DataGridComboBoxColumn ItemsSource
我目前正在努力解决 C# WPF 中的 DataGridComboBoxColumn。 我有 ToolModel 类 工具模型类 { 公共长ID { 获取;放; } 公共字符串数字{获取;放; } 公共字符串...
将 Material Design 应用于 WPF 项目上的 FilterDataGrid
我正在使用 Material Design 和 DataGridFilter 我正在尝试将材质设计应用到 DataGridFilter 标头,并且我可以通过这样做来应用它; 我正在使用Material Design和DataGridFilter 我正在尝试将 Material Design 应用到 DataGridFilter 标头,并且我可以通过这样做来应用它; <fdg:FilterDataGrid x:Name="MainDataGrid" Grid.Row="0" AutoGenerateColumns="False" IsReadOnly="True" SelectionChanged="DataGrid_SelectionChanged" SelectionMode="Single" ItemsSource="{Binding LoadedNcrs}" FilterPopupBackground="White" Style="{StaticResource FilterDatagridStyle}"> <fdg:FilterDataGrid.Resources> <Style TargetType="{x:Type DataGridColumnHeader}" BasedOn="{StaticResource MaterialDesignDataGridColumnHeader}" /> </fdg:FilterDataGrid.Resources> <fdg:FilterDataGrid.Columns> <fdg:DataGridTextColumn Header="Record ID" Binding="{Binding ID, Mode=OneWay}" SortDirection="Descending" IsColumnFiltered="True" /> <fdg:DataGridTextColumn Header="Status" Binding="{Binding Status, Mode=OneWay}" IsColumnFiltered="True" /> <fdg:DataGridTextColumn Header="Client" Binding="{Binding ClientCode, Mode=OneWay}" IsColumnFiltered="True" /> <fdg:DataGridTextColumn Header="Order Number" Binding="{Binding OrderNumber, Mode=OneWay}" IsColumnFiltered="True" /> <fdg:DataGridTextColumn Header="Raised By" Binding="{Binding RaisedBy, Mode=OneWay}" IsColumnFiltered="True" /> <fdg:DataGridTextColumn Header="Raised On" Binding="{Binding DateRaised, Mode=OneWay}" IsColumnFiltered="True" /> </fdg:FilterDataGrid.Columns> </fdg:FilterDataGrid> 但是,结果是这样的; 过滤器按钮“推”开文本并隐藏它。 我已经被困了几个小时试图解决这个问题,但无济于事。我的造型技能还相当有限。 有什么想法可以解决这个问题吗? 我尝试简单地使标题透明,而不混合材料设计 - 但这导致排序指示器消失。 事实证明解决方案非常简单 <Style TargetType="{x:Type DataGridColumnHeader}" BasedOn="{StaticResource MaterialDesignDataGridColumnHeader}"> <Setter Property="HorizontalContentAlignment" Value="Stretch" /> </Style> 感谢 DataGridFilter 的作者在here回答。
使用 MVVM,如何从 DataTable 动态生成 WPF DataGrid 列并显示按钮列?
我试图从数据表动态生成数据网格,同时显示两个用于“编辑”和“删除”功能的按钮列。我可以在 XA 中手动创建按钮列...
向 CollectionViewSource 添加 SortDescription 会清除视图的过滤器
我的代码隐藏构建了一个 CollectionViewSource 来对表示磁盘文件夹的对象集合进行排序和过滤。它将其视图公开给我的 XAML。我最初编写了构建对象 l 的代码...