wpf 相关问题

Windows Presentation Foundation或WPF是用于在基于Windows的应用程序中呈现用户界面的子系统。

将 TabPanel 更改为 Visibility.Collapsed 在代码隐藏中

我目前遇到以下问题:WPF TabControl 折叠选项卡标题未完全隐藏(当我折叠 TabItems 时,我仍然看到一条由几个像素组成的灰线,其中

回答 1 投票 0

WPF-社区 MVVM 工具包 - 将中继命令发送到 ViewModel,使用 DataGrid 的 SelectedItem 作为命令参数,避免代码隐藏事件

我被困在这里,找不到类似的东西! 在 WPF 应用程序和社区 MVVM 工具包中,我有 仪表板.xaml 我被困在这里,找不到类似的东西! 在 WPF 应用程序和社区 MVVM 工具包中,我有 仪表板.xaml <Window x:Class="MyIatreio.MVVM.Views.DashBoard" 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:local="clr-namespace:MyIatreio.MVVM.Views" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:nacontrols="clr-namespace:MyIatreio.NAControls" xmlns:viewmodels="clr-namespace:MyIatreio.MVVM.ViewModels" xmlns:converters="clr-namespace:MyIatreio.MVVM.Converters" Title="DashBoard" Width="800" Height="450" d:DataContext="{d:DesignInstance Type=viewmodels:DashBoardViewModel}" Loaded="Window_Loaded" ShowInTaskbar="False" WindowState="Maximized" WindowStartupLocation="CenterScreen" mc:Ignorable="d"> <Window.Resources> <converters:DataGridRowToVisitConverter x:Key="DataGridRowToVisit" /> </Window.Resources> <Grid> <DataGrid x:Name="VisitsDataGrid" AutoGenerateColumns="True" CanUserAddRows="False" IsReadOnly="True" IsSynchronizedWithCurrentItem="True" ItemsSource="{Binding Visits, Mode=TwoWay}" SelectedItem="{Binding SelectedVisit, Mode=TwoWay}" SelectionChanged="VisitsDataGrid_SelectionChanged" SelectionMode="Single" DataContext="{Binding}"> <DataGrid.Resources> <ContextMenu x:Key="RowContextMenu"> <MenuItem Header="Edit" Command="{Binding EditVisitCommand}" CommandParameter="{Binding SelectedItem, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" /> <!-- Your ContextMenu Items --> </ContextMenu> </DataGrid.Resources> <DataGrid.RowStyle> <Style TargetType="DataGridRow"> <Setter Property="ContextMenu" Value="{StaticResource RowContextMenu}" /> </Style> </DataGrid.RowStyle> </DataGrid> </Grid> </Window> 仪表板.xaml.cs using CommunityToolkit.Mvvm.Messaging; using Microsoft.EntityFrameworkCore.Diagnostics; using MyIatreio.MVVM.Messages; using MyIatreio.MVVM.Models; using MyIatreio.MVVM.ViewModels; using MyIatreio.Utils.Dialogs; using Syncfusion.Data.Extensions; using System.ComponentModel; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Input; using System.Windows.Media; namespace MyIatreio.MVVM.Views; public partial class DashBoard : Window { private readonly DashBoardViewModel _dashboardViewModel; public DashBoard() { InitializeComponent(); _dashboardViewModel = new DashBoardViewModel(); DataContext = _dashboardViewModel; } private void Close_Clicked(object sender, RoutedEventArgs e) { this.Close(); } private async void Window_Loaded(object sender, RoutedEventArgs e) { await _dashboardViewModel.LoadData(); } // etc !! } 在 DashBoardViewModel.cs 中 using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using CommunityToolkit.Mvvm.Messaging; using Microsoft.EntityFrameworkCore; using MyIatreio.DataAccess; using MyIatreio.DataAccess.Context; using MyIatreio.DataAccess.Repositories; using MyIatreio.MVVM.Messages; using MyIatreio.MVVM.Models; using MyIatreio.MVVM.Views; using Syncfusion.DocIO.DLS; using System.Collections.ObjectModel; using System.Diagnostics; using System.Windows.Controls; using System.Windows.Input; namespace MyIatreio.MVVM.ViewModels; public partial class DashBoardViewModel : ObservableRecipient { private readonly UnitOfWork _uoW; // SelectedVisit [ObservableProperty] private Visit _selectedVisit; [ObservableProperty] private int _visitsCount; [ObservableProperty] private ObservableCollection<Visit> _visits; public DashBoardViewModel() { SelectedVisit = new Visit(); _uoW = new(new AppDbContext()); Visits = []; } // EditVisit command with param either Visit selectedVisit or Object obj // any of the following is accepted // // public void EditVisit(Visit visit) // public void EditVisit(Object obj) [RelayCommand] public void EditVisit(Object obj) { Visit selectedVisit = (Visit)obj; if (selectedVisit == null) return; // etc } [RelayCommand] private void DeleteVisit(Visit visit) { Visits.Remove(visit); _uoW.Visits.Remove(visit); _uoW.SaveChanges(); } // etc } 我想避免使用事件和背后的代码。 我希望当用户连续双击时以及当用户右键单击一行并在弹出的 ContextMenu 上选择 EditVisit 时调用 viewmodel 的 EditVisit 命令!! 多次尝试设法将 DataGrid 的选定行作为 DashBoard.xaml 文件中的 CommandParameter 传递,并将其直接发送到视图模型(不通过后面的代码),但都失败了。必须有一种方法仅从 xaml 中将此选定行作为 CommandParameter 传递。 我希望 WPF 和社区 MVVM 工具包专家能够指导我如何将选定的行(作为访问或作为对象)传递到视图模型 有人可以帮助我吗,因为我在 Google 或 ChatGPT 3.5 中都找不到类似的内容 提前谢谢 您需要将您的属性与您的命令关联起来。尝试以下操作: // SelectedVisit [ObservableProperty] [NotifyCanExecuteChangedFor(nameof(EditVisit))] private Visit _selectedVisit;

回答 1 投票 0

WPF:关于 SourceInitialized 和 ContentRendered

有人可以告诉我一些我们在 Window 类中使用此类事件的场景吗?

wpf
回答 1 投票 0

从代码隐藏设置用户控件的DataContext

这应该很简单,但是它会让 VS2008 陷入严重的循环。 我正在尝试使用 MVVM 的 WPF,虽然我已经开发了大约 15 年,并且有一个比较,但我完全是新手。科学。

回答 3 投票 0

避免打开同一个窗口两次 WPF

我正在使用WPF(C#)编写程序。我使用这样的方法来打开和关闭窗口: 公共静态无效 openCloseWindow(要打开的窗口,要关闭的窗口) { toBeOpen.Show(); makeWindowC...

回答 6 投票 0

检测 WPF RichTextBox 中的超链接

大家好,我想编写一些基本的支持来检测 WPF RichTextBox 控件中的超链接。我的计划是使用正则表达式来识别任何链接,然后手动将它们替换为 r...

回答 2 投票 0

WPF DataGrid 文件名列允许直接文本输入或按钮通过对话框浏览

我有一个带有 DataGrid 的 WPF 应用程序,用户将在其中输入文件名。我希望他们能够通过双击直接输入文件名,或者单击“浏览”按钮启动打开的...

回答 1 投票 0

如何更改资源字典中按钮的角?

我需要帮助来创建我正在运行的代码的替代方案。非常感谢您的回答、支持和同行评审。 这个答案对我帮助很大。我的按钮形状确实符合我的预期。我的目标...

回答 1 投票 0

Stream 转换为 0 字节

安装最新版本的 Visual Studio 2022 和 .NET 8.0 后,我在将流转换为文件(保存本地或上传到 FTP)时遇到问题。 到目前为止我一直在使用以下c...

回答 1 投票 0

在 WPF 中使用 RenderTargetBitmap 创建 TextBlock 的 png 图像时出现问题

当使用 RenderTargetBitmap 创建作为 Canvas 子级的 TextBlock 的 png 文件时,文本将拉伸到 TextBlock 的宽度。 TextBlock 作为“Right&qu...

回答 1 投票 0

如何将DataGridColumn作为命令参数传递? (WPF)

我的 DataGrid 有一些具有相同模板的列。 我的 DataGrid 有一些具有相同模板的列。 <DataTemplate x:Key="ButtonCellTemplate"> <Button Content="TestButton" Command="{Binding TestCommand}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGridColumn}}" /> </DataTemplate> 它不起作用,我知道为什么。 如何将 DataGridColumn(或 DataGridColumnHeader)作为命令参数传递? 换句话说,我需要知道在 ViewModel 中从哪一列调用该命令。 如果我们不涉及在 ViewModel 中接收此类信息从根本上来说是概念上错误的问题,那么这可以实现,但方式略有不同。 您对 DataGrid 可视化树存在误解。它是 ItemsControl 的继承者。因此,每一行旨在显示源集合的一个元素。单元格放置在一行中以表示该行的一个或另一个元素 - 通常是该元素的属性之一。这样的列实际上并不存在。这些只是细胞从中接收所需数据的容器。因此,该列不是单元格的祖先,更不用说其内容了。 但是单元格具有与其所在列进行通信的属性。你可以用它。 <DataTemplate x:Key="ButtonCellTemplate"> <Button Content="TestButton" Command="{Binding TestCommand}" CommandParameter="{Binding Column, Mode=OneWay, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGridCell}}}"/> </DataTemplate>

回答 1 投票 0

检查对象列表中的对象类型

获得一个带有 StackPanel 的 WPF 表单,其中包含带有 StackPanel 的扩展器。 获得一个带有 StackPanel 的 WPF 表单,其中包含带有 StackPanel 的扩展器。 <Expander Name="eSoftware" Header="5 Software"> <StackPanel Name="StSoftware" Orientation="Horizontal" HorizontalAlignment="Left" Margin="0,0,8,0"> <StackPanel Margin="0,10" Width="29"> <Image x:Name="img" Height="26" Source="Images/3453120.png" Stretch="Fill" Margin="0,0,0,0"/> </StackPanel> <StackPanel Margin="0,10"> <Label x:Name="lbl" Content="Label" Margin="0,0,0,0" /> </StackPanel> </StackPanel> </Expander> 我在对象列表中读取了扩展器的内容。 现在我必须知道列表是否包含 stackpanel 类型的对象。 List<Object> tmpList = new List<Object>(); tmpList = ReadChild((StackPanel)exp.Content) //gives out the content of an expander. In the Upper case it is 2 StackPanels if(tmpList.Contains.typeof(StackPanel)=true) //that's wrong { //search for the Stackpanel with lables in it } 您可以使用 OfType<> 来过滤列表中的特定类型。我知道您想要循环遍历所有 StackPanel(在列表中),因此您可以执行以下操作: foreach(var panel in tmpList.OfType<StackPanel>()){ //your work here ... } 如果你想检查是否有StackPanel,那么使用这个: if(tmpList.OfType<StackPanel>().Any()){ //... } 如果我理解正确,你可以使用这个 LINQ 表达式 var w = tmpList.Where(x=>x.IsTypeOf(StackPanel)).SingleOrDefault(); 我会做这样的事情:使用 Enumerable.OfType<>() 更多信息:https://msdn.microsoft.com/en-us/library/vstudio/bb360913(v=vs.100).aspx foreach(var stackpanel in tmpList.OfType<StackPanel>()) { // search for the label. (the same trick) var myLabel = stackpanel.Children.OfType<Label>().FirstOrDefault(); // if the label can't be found, continue to the next one. if(myLabel == null) continue; myLabel.Content = "whatever"; } 没有多少问题可以回答这部分问题。 “现在我必须知道列表是否包含 stackpanel 类型的对象。” 可以通过以下方式实现: if (tmpList.Any(x=>x.IsTypeOf(StackPanel))) { //returns true if there are any stack panels in the list } public int ExecuteDMLStatements(字符串查询,字符串连接,列表参数名称,列表参数值) { 整数计数=0; 尝试 { if (paramNames.Count == paramValues.Count) { SqlConnection conn = GetSqlConnecton(连接); 使用 (SqlCommand cmd = new SqlCommand(query, conn)) { 对于 (int i = 0; i < paramValues.Count; i++) { Type valueType = paramValues[i].GetType(); switch (valueType.Name) { case "Int32": cmd.Parameters.AddWithValue(paramNames[i], Convert.ToInt32(paramValues[i])); break; case "Double": cmd.Parameters.AddWithValue(paramNames[i], Convert.ToDouble(paramValues[i])); break; case "DateTime": cmd.Parameters.AddWithValue(paramNames[i], Convert.ToDateTime(paramValues[i])); break; case "Single": cmd.Parameters.AddWithValue(paramNames[i], Convert.ToString(paramValues[i])); break; default: cmd.Parameters.AddWithValue(paramNames[i], Convert.ToString(paramValues[i])); break; } } count = cmd.ExecuteNonQuery(); } } return count; } catch (Exception ex) { throw new Exception("Issue in ExecuteDMLStatements method.", ex); } }

回答 5 投票 0

在WPF框架控件中关闭导航页面声音

我在 WPF 窗口中有一个 Frame 元素,并且我的应用程序中的所有内容都是使用 Frame.Navigate() 加载的。但是,当导航到新页面时,默认会播放声音,...

回答 2 投票 0

如何禁用线系列(笛卡尔图表)的轴标签?

我正在使用 LiveCharts for WPF 中的线系列图表,如何删除图表侧面和底部的值以仅显示正在更新的线系列 我正在使用 LiveCharts for WPF 中的线系列图表,如何删除图表侧面和底部的值以仅显示正在更新的线系列 <lvc:CartesianChart x:Name="chrtCPU" Width="250" Height="55" Foreground="#13192F" LegendLocation="None"> <lvc:CartesianChart.Series> <lvc:LineSeries LineSmoothness="0" AreaLimit="15000" Values="{Binding Values}" /> </lvc:CartesianChart.Series> </lvc:CartesianChart> Values = new GearedValues<double>().WithQuality(Quality.High); var sw = new Stopwatch(); sw.Start(); Action readFromTread = () => { while (true) { var cpuCounter = new PerformanceCounter("Processor", "% Processor Time", "_Total", Environment.MachineName); cpuCounter.NextValue(); Thread.Sleep(500); //we add the lecture based on our StopWatch instance var first = Values.DefaultIfEmpty(0).FirstOrDefault(); if (Values.Count > keepRecords - 1) Values.Remove(first); if (Values.Count < keepRecords) Values.Add(cpuCounter.NextValue()); } }; Task.Factory.StartNew(readFromTread); DataContext = this; public GearedValues<double> Values { get; set; } 要禁用轴的标签,您必须显式定义该轴,然后通过将 Axis.ShowLabels 设置为 false 来禁用标签: <lvc:CartesianChart> <lvc:CartesianChart.Series> <lvc:LineSeries Values="{Binding Values}" /> </lvc:CartesianChart.Series> <lvc:CartesianChart.AxisX> <lvc:Axis ShowLabels="False" /> </lvc:CartesianChart.AxisX> <lvc:CartesianChart.AxisY> <lvc:Axis ShowLabels="False" /> </lvc:CartesianChart.AxisY> </lvc:CartesianChart>

回答 1 投票 0

如何使用 C# 在 WPF 中创建 2 个独立的窗口

我想在xaml中创建2个单独的窗口,并且我想从代码部分单独控制它们。你知道该怎么做吗?如果您可以提供一些代码示例,我将不胜感激......

回答 2 投票 0

禁用组合框 WPF 中的突出显示文本

我已在组合框中添加了一些显示文本,但我想删除突出显示它的功能。当鼠标悬停在文本上时,光标自动显示为“文本”样式光标。我...

回答 1 投票 0

打开文件对话框并使用 WPF 控件和 C# 选择文件

我有一个名为textbox1的文本框和一个名为button1的按钮。 当我单击“button1”时,我想浏览文件以仅搜索图像文件(类型 jpg、png、bmp...)。 当我选择图像文件时...

回答 3 投票 0

如何使用由 MappingName 填充的 SFDataGrid 将一列绑定到另一列

我试图根据同一行中另一列的布尔值来调整一列中的小数位数。 这是 XAML 我试图根据同一行中另一列的布尔值来调整一列中的小数位数。 这是XAML <syncf:GridCheckBoxColumn HeaderText="Headeer1" MappingName="OnlyIntegerQuantities" Width="120" AllowEditing="True"/> <syncf:GridNumericColumn HeaderText="Header2" MappingName="Quantity" Width="120" AllowEditing="True" Decimals="{Binding DataContext.OnlyIntegerQuantities,RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=syncf:VirtualizingCellsControl}, Converter={StaticResource BooleanToDecimalConverter}}" ValidationMode="Decimal"/> 如果我绑定到 ViewModel 中的任何属性,它们工作正常,但我无法绑定到填充该行的模型中的属性。 我尝试绑定到 CellsControl 的相对源,但不起作用。 我正在使用 ObservableCollection 来填充数据网格的 ItemsSource。 使用GridTemplateColumn代替GridNumericColumn并使用内部的TextBlock定义模板。使用多值转换器的多重绑定设置 Text 属性。 <syncf:GridTemplateColumn HeaderText="Header2" MappingName="Quantity" Width="120" AllowEditing="True"> <syncf:GridTemplateColumn.CellTemplate> <DataTemplate> <TextBlock> <TextBlock.Style> <Style TargetType="TextBlock"> <Setter Property="Text"> <Setter.Value> <MultiBinding Converter="{StaticResource BooleanToDecimalConverter}"> <Binding Path="Quantity"/> <Binding Path="OnlyIntegerQuantities"/> </MultiBinding> </Setter.Value> </Setter> </Style> </TextBlock.Style> </TextBlock> </DataTemplate> </syncf:GridTemplateColumn.CellTemplate> </syncf:GridTemplateColumn> 转换器 public class BooleanToDecimalConverter : IMultiValueConverter { public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) { var quantity = (double)values[0]; var onlyQuantityInteger = (bool)values[1]; if (onlyQuantityInteger) { return String.Format("{0:0}", quantity); } else { return (quantity).ToString(); } } public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) { throw new NotImplementedException(); } }

回答 1 投票 0

在WPF中,为什么ListBox是白色的?

我正在尝试在 WPF 中定义应用程序范围的主题。我首先将默认窗口背景设置为黑色。在我的全局资源中(当前在 App.xaml 中),我设置了以下内容 我正在尝试在 WPF 中定义一个应用程序范围的主题。我首先将默认窗口背景设置为黑色。在我的全局资源中(当前在 App.xaml 中),我设置了以下内容 <Application x:Class="f12dotnet.ThemeSandbox.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" StartupUri="MainWindow.xaml"> <Application.Resources> <SolidColorBrush x:Key="{x:Static SystemColors.WindowBrushKey}" Color="#444" /> </Application.Resources> </Application> 我的用户界面中有一个 ListBox,它仍然是白色的。将 SystemColors.ControlBrushKey 设置为透明没有帮助。 在默认列表框模板中,我在最顶部看到一个设置器,将Background属性(如我所期望的)设置为SystemColors.WindowBrushKey。尽管如此,背景还是白色的。 <Style x:Key="{x:Type ListBox}" TargetType="{x:Type ListBox}"> <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.WindowBrushKey}}"/> 使用 DependencyPropertyHelper.GetValueSource 告诉我来源是 DefaultStyle,这意味着,根据 MSDN: 源来自默认样式的setter。默认样式来自当前主题。 那么那是哪里? 在 ListBox 模板的下方,我注意到以下内容: <!-- [[Aero2.NormalColor]] --> <SolidColorBrush x:Key="ListBox.Static.Background" Color="#FFFFFFFF" /> <SolidColorBrush x:Key="ListBox.Static.Border" Color="#FFABADB3" /> 我怀疑这就是罪魁祸首,因为出于绝望,我实际上在 WPF GitHub 存储库中搜索了“#FFFFFF”,除此之外没有发现任何有趣的东西。有趣的是,它是在控件模板中定义的,而不是在经典主题 XAML 中。 如果这是值的来源,我可以像覆盖SystemColors.WindowBrushKey一样“覆盖”此画笔吗? 有什么方法我还没有想到吗? 或者 正在为 ListBox 创建默认样式(谁知道还有多少个控件),将背景设置为透明,我唯一的选择? PS:此时,我意识到即使我确实覆盖了ListBox.Static.Background画笔,我仍然必须对许多其他控件执行相同的操作,因此创建默认样式(从一个基本样式继承)实际上似乎是更好的方法。 我只是好奇,深入兔子洞,想查明白色背景的起源并在那里“阻止它”。 此外,显然有人“十年前遇到过类似的问题”,并设法按照我想要的方式解决它并期望它起作用。但它对我、今天或 Windows 11 不起作用。 我建议您检查您的元素中实际使用了哪个模板。我怀疑这将是您提供链接的模板。该模板使用“Value =”{DynamicResource”。据我所知,在 Windows 8 之前,这是有效的。并且具有覆盖系统密钥的解决方案在 Windows 7 中完美地完成了这项工作。 现在不行了。因此,在大多数情况下,画笔是在指定模板的同一位置指定的。并且使用“StaticResource”来链接到它。这意味着在模板之外不能高估它。 您可以通过以下方式获取配置中的元素使用的模板: 在 Studio 设计器中,打开包含所需元素的 XAML(通常为此,我会创建一个包含一个元素的新测试空窗口); 在设计器(视觉形式)中,右键单击上下文菜单; 在其中选择“编辑模板”->“编辑副本”; 之后将显示一个带有参数的对话框 - 设置您需要的参数; 单击“确定”,您将收到您的元素使用的模板。 在我的例子中,这是通过指定方式获得的ListBox模板的样子: <SolidColorBrush x:Key="ListBox.Static.Background" Color="#FFFFFFFF"/> <SolidColorBrush x:Key="ListBox.Static.Border" Color="#FFABADB3"/> <SolidColorBrush x:Key="ListBox.Disabled.Background" Color="#FFFFFFFF"/> <SolidColorBrush x:Key="ListBox.Disabled.Border" Color="#FFD9D9D9"/> <Style x:Key="ListBoxStyle1" TargetType="{x:Type ListBox}"> <Setter Property="Background" Value="{StaticResource ListBox.Static.Background}"/> <Setter Property="BorderBrush" Value="{StaticResource ListBox.Static.Border}"/> <Setter Property="BorderThickness" Value="1"/> <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/> <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto"/> <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/> <Setter Property="ScrollViewer.CanContentScroll" Value="true"/> <Setter Property="ScrollViewer.PanningMode" Value="Both"/> <Setter Property="Stylus.IsFlicksEnabled" Value="False"/> <Setter Property="VerticalContentAlignment" Value="Center"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type ListBox}"> <Border x:Name="Bd" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Padding="1" SnapsToDevicePixels="true"> <ScrollViewer Focusable="false" Padding="{TemplateBinding Padding}"> <ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/> </ScrollViewer> </Border> <ControlTemplate.Triggers> <Trigger Property="IsEnabled" Value="false"> <Setter Property="Background" TargetName="Bd" Value="{StaticResource ListBox.Disabled.Background}"/> <Setter Property="BorderBrush" TargetName="Bd" Value="{StaticResource ListBox.Disabled.Border}"/> </Trigger> <MultiTrigger> <MultiTrigger.Conditions> <Condition Property="IsGrouping" Value="true"/> <Condition Property="VirtualizingPanel.IsVirtualizingWhenGrouping" Value="false"/> </MultiTrigger.Conditions> <Setter Property="ScrollViewer.CanContentScroll" Value="false"/> </MultiTrigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style>

回答 1 投票 0

CollectionView 不支持由于 Dispatcher.Invoke() 中的不同线程而发生的更改

我在 StackOverFlow 中看到了很多问题,但他们没有在 Dispatcher 中收到此错误 我正在公司升级一个 Wpf 应用程序,他们给了我一个任务,让 UI 上的游戏列表变得更快。 应用程序设计帕特...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.