Windows Presentation Foundation或WPF是用于在基于Windows的应用程序中呈现用户界面的子系统。
WPF MVVM C# - 如何将按钮的文本绑定到 LINQ 表达式并使其动态更改?
我想将按钮文本绑定到 LINQ 表达式,如下所示: 公共字符串 CloseButtonText => Roles.Any(r => r.IsChanged) ? "保存并关闭" : "关闭"; ...但事实并非如此
在 Zoom 会议远程控制期间,由于延迟,同事在我的应用程序(WPF、.NET 8)中导致意外的拖放操作。我现在想在我的软件中停用拖放...
想象一下这种情况: 有视图模型 ViewModelA 和 ViewModelB。这两个模型都是值的数据源(事实来源),我们可以将其称为“选定的”。有一个“选定...
ComboBox SelectedValuePath 验证不起作用
我第一次尝试在 XAML / WPF 中实现数据验证。我读过一些教程,似乎有很多种方法可以做到这一点。我已经决定了一种方法,它......
我有一个带有 Devexpress 的 XAML 代码的按钮,如下所示: 我有一个带有 Devexpress 的 XAML 代码的按钮,如下所示: <dxlc:LayoutItem Width="80" Margin="0,0,0,0"> <Button Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ob:ViewModel}}, Path=DataContext.ClickCommand}" ToolTip="CLick this button" Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}" BorderThickness="1" BorderBrush="DimGray"> <StackPanel Orientation="Horizontal"> <Image Source="../../../Resources/Ext/image.png" MaxHeight="16" MinHeight="16" Stretch="Uniform" /> <dxe:TextEdit EditValue="Click Me" IsReadOnly="True" ShowBorder="False" Foreground="White" Background="Transparent"/> </StackPanel> </Button> </dxlc:LayoutItem> 使用此代码,只有按钮的边框可单击,而文本区域则不可单击。如何在按钮旁边放置图像并让按钮的整个区域都可单击? WPF 似乎在使用我的 TextEdit 时遇到了一些问题,所以我只是将其更改为 TextBlock,它现在是按钮的一部分且可单击。 WPF 鼠标事件是 RoutedEvent 并在可视化树中冒泡,但某些控件行为可能会停止事件冒泡。 在原生控件中,TextBox中的Button会拦截点击事件,点击TextBox不会触发Button点击事件。 请使用正确的控件来构建软件的 UI。
如果窗口的所有者是通过WindowInteropHelper设置的,如何获取窗口的所有者?
我有父窗口,其所有者是通过 WindowInteropHelper 设置的。 在这种情况下,Parent.Owner 等于 null。 有什么方法可以获取拥有该窗口的窗体的句柄吗? 我需要这个来赢得对话......
我有一个应用程序,可以在 WPF 中的 Image 对象内显示图像。该图像包含在一个控件中,其 xaml 如下所示: 我有一个应用程序,可以在 WPF 中的 Image 对象内显示图像。该图像包含在一个控件中,其 xaml 如下所示: <UserControl x:Class="MyProgram.NativeImageDisplay" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Loaded="UserControl_Loaded"> <Canvas Name="border" Background="Black" > <Image Name="image" StretchDirection="Both" Stretch="Uniform" ClipToBounds="True" SnapsToDevicePixels="True" RenderOptions.BitmapScalingMode="HighQuality"></Image> </Canvas> </UserControl> 其中两个控件包含在窗口的网格中,如下所示: <Grid Grid.Row="2" Name="DisplayCanvas"> <Grid.ColumnDefinitions> <ColumnDefinition/> <ColumnDefinition/> </Grid.ColumnDefinitions> <l:NativeImageDisplay x:Name="imageDisplay2" Grid.Column="1" ClipToBounds="True"/> <l:NativeImageDisplay x:Name="imageDisplay" Grid.Column="0" ClipToBounds="True"/> </Grid> 我在这里称剪辑为真。 用户可以使用鼠标上的滚动按钮放大图像,最终调用图像上的 ScaleTransform: private void image_MouseWheel(object sender, MouseWheelEventArgs e) { if (!thumbnail) { TransformGroup transformGroup = (TransformGroup)border.RenderTransform; ScaleTransform transform = (ScaleTransform)transformGroup.Children[0]; double oldScaleX = transform.ScaleX; double oldScaleY = transform.ScaleY; double zoom = e.Delta; transform.ScaleX += zoom / 10000; transform.ScaleY += zoom / 10000; if (transform.ScaleX > maxZoom || transform.ScaleY > maxZoom) { transform.ScaleX = maxZoom; transform.ScaleY = maxZoom; } if (transform.ScaleX < minZoom || transform.ScaleY < minZoom) { transform.ScaleX = minZoom; transform.ScaleY = minZoom; } Point thePoint = e.GetPosition(border); transform.CenterY = 0; transform.CenterX = 0; foreach (UIElement child in border.Children) { if (child is Anchor) { TransformGroup group = (TransformGroup)child.RenderTransform; ScaleTransform t = (ScaleTransform)group.Children[0]; t.ScaleX *= oldScaleX / transform.ScaleX; t.ScaleY *= oldScaleY / transform.ScaleY; } } } } 一旦调用缩放变换,图像就不再包含在其画布或网格选择的边界中。本质上,ClipToBounds 被忽略。我怎样才能让这个转换关注ClipToBounds? Canvas 的独特之处在于它并不像其他元素那样真正参与布局系统。它基本上充当具有固定位置子项的无限大小空间,因此通常完全忽略裁剪。如果没有看到更多代码,我无法确定,但如果您想将裁剪应用到缩放后的对象,将缩放移动到不同的元素可能会达到您想要的效果。最简单的方法是在画布周围包裹一个边框,然后对其应用 ScaleTransform。边框应该为您提供更好的剪切行为。 <Border x:Name="border" Background="Black" ClipToBounds="True"> <Canvas x:Name="imageHost"> ... </Canvas> </Border> 以上评论帮助了我。将一个画布嵌套在另一个画布中,将 ClipToBounds="True" 添加到父级并将嵌套的高度和宽度分别绑定到父级属性。 这种方式消除了对父级执行转换的需要。 <Canvas ClipToBounds="True" Name="Outer"> <Canvas x:Name="Inner" Height="{Binding ActualHeight, ElementName=Outer, Mode=OneWay}" Width="{Binding ActualWidth, ElementName=Outer, Mode=OneWay}" /> </Canvas> 有 three 方法可以做到这一点。我已经在 StackOverflow 上用示例详细解释了它。
我有一个网格,其宽度设置为250。窗口的宽度为600。网格的左右边距设置为50和400。所以渲染的网格宽度减少为600-(50+ 400)= 150。 我...
我正在使用 VSTO 和 WPF (MVVM) 使用 C# 开发 Word 搜索工具。 我正在使用 Microsoft.Office.Interop.Word.Find() 方法并迭代文档以查找匹配项。一些文档...
在 XAML 中设置和图像 CreateOptions 和 CacheOption
我想像这样设置我的 CreateOptions 和 CacheOption: img = 新的 BitmapImage(); img.BeginInit(); img.CacheOption = BitmapCacheOption.OnDemand; img.CreateOptions = BitmapCreateOptions.IgnoreImageC...
需要 SharpDXElement 替代品。 SharpDX WPF 闪烁的解决方法
我有一个 SharpDX 项目即将完成。它使用 Kinect 进行交互。因此,我的项目对 Kinect 区域和 KinectUserViewer 对象都使用 WPF。 SharpDX 有...
System.Drawing.Point 和 System.Windows.Point 有什么区别?
System.Drawing.Point 和 System.Windows.Point 有什么区别? 在什么情况下应该使用哪一个? 我正在使用 WPF。
为什么我在 ComboBox 中遇到异常('System.NullReferenceException')
如果我将事件处理程序添加到组合框(例如 SelectionChanged),我会遇到异常。谁能告诉我为什么。 奇怪的行为,因为在我的笔记本电脑上安装了 VS2010 的 win7 时它运行
我有一个 WPF 控件。 我需要在背景中有一个十字架,如下所示: 之后,我就可以在“交叉”背景上添加其他控件: 我应该如何画十字,知道当我
我正在尝试创建一个热键(即Ctrl + Y)将焦点更改为文本框。 我是从 Delphi 移植过来的,这让我很困惑。在 Delphi 5 中,这非常非常简单。 (在标题上...
我将 Label 的 .Content 值设置为包含下划线的字符串;第一个下划线被解释为加速键。 无需更改底层字符串(通过替换...
我想创建一个简单的按钮模板,其中包含图像和文本。但我想保留系统按钮的外观和感觉。 我如何一步步创建它? P.S.:我已经尝试过...
我已成功将折叠添加到我的 AvalonEdit 文档中,但是,为了获得真正有用的体验,我需要存储折叠状态,因此下次用户打开文档时,折叠状态...
当我的应用程序中出现错误时,我试图显示一个对话框窗口。当视图模型想要启动一个对话框时,它会触发一个事件,并且视图的代码通过创建一个......