Windows Presentation Foundation或WPF是用于在基于Windows的应用程序中呈现用户界面的子系统。
在WPF中使用行为绑定DataGrid的SelectedItems不起作用
我的想法是使用行为来绑定DataGrid的SelectedItems。我创建了一个名为 DataGridSelectItemsBehavior 的行为。有一个名为 MySlectItemsProperty 的依赖属性。我是
WPF Button DataTrigger 在属性更改时不更新内容
我正在为学校项目开发 WPF 电影数据库应用程序,我有一个按钮,我想在其中根据 SelectedFilm 对象的 bool 属性 IsFavorite 切换 Button 的内容。当
我正在开发一个 WPF 应用程序,它的视图之一中有 Web 浏览器。当我运行应用程序时,它工作正常,但 Web 浏览器控件位于我的 wpf 区域的顶部。我知道这是要做的事
WPF VirtualizingStackPanel 排序后文本换行问题
我是 WPF 新手,编写此程序是为了帮助组织和编目我的书籍。我使用了虚拟化包裹面板,在我对书籍进行排序之前,该面板可以完美显示。 这是视图预排序:
这是我想做的一个例子: MessageBox.Show("错误行号" + CurrentLineNumber); 上面代码中的CurrentLineNumber,应该是这个p的源代码中的行号...
为什么 MouseLeftButtonUp 在 WPF 中不触发?
为什么 Canvas 上的 MouseLeftButtonUp 在我的 WPF 应用程序中没有触发? 这是 XAML: 为什么 Canvas 上的 MouseLeftButtonUp 在 WPF 应用程序中没有触发? 这是 XAML: <Grid Height="300" Width="400"> <Canvas Name="canvas" MouseMove="canvas_MouseMove" MouseLeftButtonUp="canvas_MouseLeftButtonUp" Background="LightGray"/> </Grid> 代码: private bool hasClicked = false; public Window1() { InitializeComponent(); } private void canvas_MouseMove(object sender, MouseEventArgs e) { if (!this.hasClicked) { this.Cursor = Cursors.None; this.canvas.Children.Clear(); this.insertRectangle(false); } } private void insertRectangle(bool filled) { Rectangle rect = createRect(filled); Point pos = Mouse.GetPosition(this.canvas); Canvas.SetLeft(rect, pos.X); Canvas.SetTop(rect, pos.Y); this.canvas.Children.Add(rect); } private Rectangle createRect(bool fill) { Rectangle rect = new Rectangle(); rect.Height = 50; rect.Width = 120; if (fill) { rect.Fill = new SolidColorBrush(Colors.Green); } else { rect.Stroke = new SolidColorBrush(Colors.Green); } return rect; } private void canvas_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { this.hasClicked = true; this.insertRectangle(true); this.Cursor = Cursors.Arrow; } 编辑:我尝试向画布添加背景颜色,但事件仍然没有触发。看起来 MouseMove 以某种方式覆盖了 MouseLeftButtonUp。 Edit2:如果我删除 MouseMove 事件,mouseLeftButtonUp 将触发。 Edit3:更大的代码示例。 在insertRectangle方法中,如果我使用 Canvas.SetTop(rect, 50); instead of Canvas.SetTop(rect, pos.Y); 事件发生得很好。 如果你不在画布上设置Background,它似乎不会关注你的鼠标事件。 尝试: <Grid> <Canvas Name="canvas" MouseMove="canvas_MouseMove" MouseLeftButtonUp="canvas_MouseLeftButtonUp" Background="White" /> </Grid> 通过不清除画布,而是在 mouseMove 方法中移动预览矩形解决了问题。 我的解决方案是完全放弃 MouseLeftButtonUp 处理程序,而是对 MouseMove 进行初始检查以查看按钮是否处于释放状态。如果是的话我将拖动设置为 false。 private void Canvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { isDragging = true; } private void Canvas_MouseMove(object sender, MouseEventArgs e) { if (e.LeftButton == MouseButtonState.Released) { isDragging = false; } }
在一个 MainViewModel 中我发送一条消息: 私有无效 TextBoxKeyDownVMMethod(KeyEventArgs e) { if (e.Key == Key.Enter) { MessengerInstance.Send 在一个 MainViewModel 中我发送一条消息: private void TextBoxKeyDownVMMethod(KeyEventArgs e) { if (e.Key == Key.Enter) { MessengerInstance.Send<Messages.WebTab.NavigatingToPageArgs>(new NavigatingToPageArgs { UrlForNavigating = "http://stackoverflow.com/questions/11485897/viewmodel-doesnt-receive-message-in-mvvm-light" }); //GoToPageInSelectedTabVMCommand.Execute((object)null); Keyboard.ClearFocus(); } } 在另一封邮件中我收到了它: public WebTabItemVievModel() { MessengerInstance.Register<NotificationMessage<Messages.WebTab.NavigatingToPageArgs>>(this, _MessageHandler_NavigatingToPage); } private void _MessageHandler_NavigatingToPage(NotificationMessage<NavigatingToPageArgs> args) { GoToPageCommand.Execute(args.Content.UrlForNavigating); } WebTabItemVievModel 在 MainViewModel 的构造函数中创建为 ObservableCollection, 这个集合是选项卡控件的 ItemsSource public MainViewModel() { WebTabItems = new ObservableCollection<WebTabItemVievModel>(); WebTabItemVievModel tabItem; tabItem = ServiceLocator.Current.GetInstance<WebTabItemVievModel>(); tabItem.Header = "Empty tab"; WebTabItems.Add(tabItem); tabItem = new WebTabItemVievModel { Header = "Empty tab" }; WebTabItems.Add(tabItem); tabItem = new WebTabItemVievModel { Header = "Empty tab" }; WebTabItems.Add(tabItem); tabItem = new WebTabItemVievModel() { AddNewTabOnTabHeaderClick =true}; WebTabItems.Add(tabItem); } WebTabItemVievModel 有自己的用于可视化的 UserControl,它通过 MainWindow.xaml 中的资源定义进行绑定: <Window.Resources> <DataTemplate DataType="{x:Type vm:WebTabItemVievModel}" > <v:WebTabItemContentViev></v:WebTabItemContentViev> </DataTemplate> </Window.Resources> Locator 在注册时已经有 true 参数。它没有改变任何东西: SimpleIoc.Default.Register<WebTabItemVievModel>(true); SimpleIoc.Default.Register<MainViewModel>(true); 谁知道为什么 WebTabItemVievModels 不接收消息? 注册类型时 通知消息 但是发送时类型是 Messages.WebTab.NavigatingToPageArgs 使类型相同,它应该可以工作
如何使用 MVVM 在 WPF 中正确实现导航侧边栏菜单(+找出更改应用程序中视图的正确方法)?
如果有人可能觉得标题令人困惑,我想道歉,我在这里描述的问题比我想象的要复杂,我很难在标题中总结它。 基础...
我有一个wpf应用程序DPI,在清单文件中包含以下代码: 我有一个 wpf 应用程序 DPI 感知,并在清单文件中包含此代码: <application xmlns="urn:schemas-microsoft-com:asm.v3"> <windowsSettings> <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true/PM</dpiAware> <!--<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitor</dpiAwareness>--> <dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2,PerMonitor</dpiAwareness> <longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware> </windowsSettings> </application> 我正在使用 OxyPlot.Wpf 制作一些绘图,但如何使绘图与任何显示器和 DPI 配置相同。 例如: 在此输入图片描述 在此输入图片描述 左图分辨率为1920x1080,缩放比例为100%,右图分辨率为2880x1800,缩放比例为175%。 右图变形了。三角形必须是等边三角形,五边形也必须是所有边都相等。 怎样才能在任何显示器上做到如左图所示? 我必须安装 OxyPlot.SkiaSharp.Wpf 软件包吗? 问题是我的 MainWindow(PlotView 的容器)有一个 LayoutTransform: Me.Scrll.LayoutTransform = New ScaleTransform(ScaleX, ScaleY) 所以,我放入 PlotView: Plot.LayoutTransform = New ScaleTransform(1 / ScaleX, 1 / ScaleY) 这样,两个显示器中的图都不会变形。
我想通过两种方式更改 Richtextbox 中的格式: 选择文本 => 文本应重新调整大小。这很好用。 未选择文本,只是在文本之间设置了插入符号光标。 => 字体-
我正在本地化一个用 C# 编写的旧软件应用程序。它是一个 .NET WPF 应用程序,使用两个 XAML 窗口作为 GUI。我创建了一个 LocalizationManager 类来处理翻译...
我有一个按钮。当鼠标悬停在按钮上时,我的项目中使用的文本块应该显示一些值。按钮是在库和我在项目中使用的库中定义的。在我的项目中我
我有一个使用 WPF 的 CefSharp 项目,我正在将我的参考从 105.3.390 升级到 119.4.30(这些是我需要的特定版本,基于托管我的代码的程序)。 为什么我升级我得到...
此平台不支持 .NET Core 6 中的 Stimulsoft 报告操作
我在 .NET Core 6 和 Visual Studio 2022 中使用 C# WPF。 我已将 StiReport.dll 添加到我的项目中,但此代码出现错误: 公共主窗口() { 初始化组件(); 变量报告 = ...
使用SelectedValue和SelectedValuePath时性能极差
我发现ListView和DataGrid在更新绑定的ItemsSource时性能都非常差。只有大约 1500 个项目,在安静的情况下仍然需要近 10 秒
如果需要从后台代码访问 WPF 控件,则需要在 XAML 中为其提供 Name 属性。 在许多情况下,您不需要从后面的代码访问控件,因为很多 c...
我有一个网格,在这个网格内部,有一个边框。边框内有一个ListView。我的问题是 ListView 不会根据边框的高度激活垂直滚动。我...
使用其名称从基于它的样式访问样式 ControlTemplate 中的元素
我有一个按钮的样式,比如 ButtonStyle,里面有 VisualStates、属性和触发器。我有另一种基于 ButtonStyle 的样式。我需要访问一个名为“OnhoverGrid”的元素...
如何在WPF中使用DockStyle.Fill作为标准控件?
我从 Windows 窗体中使用,我创建一个面板,将控件放置在其中并为它们提供 DockStyle.Fill 以最大程度地扩大其周围面板的大小。 在 WPF 中我想要同样的。我有一个