Tag: wpf controls

将子项添加到UserControl

我的任务 创建一个UserControl ,它应该能够包含WPF中可用的任何可视子对象,子对象显示在一个容器中,该容器是UserControl的子对象。 我的问题 我无法设法让孩子们在我的容器中正确显示,我尝试了serval方式,并没有找到适合设计师的方法。 我也尝试使用ContentControl但没有显示任何内容。 我的方法 首先,我找到了这个链接,我尝试了一些变化。 我设法在正确的容器中显示内容,但它在设计器中不起作用,因为content-property是set-private而设计者想要覆盖它。 将所有内容放在XAML中都有效但与设计人员合作时这并不好。 这可能是最喜欢的方式。 在此之后,我试图通过将Content -property绑定到UIElementCollection -type的可绑定属性来使用ContentControl 。 这种方法不会给设计师带来任何错误,但我不得不承认我从未在容器中看到任何控件(例如Button )。 它保持空白但添加了孩子。 结论 经过一段时间寻找一个简单快捷的解决方案后,我决定在这里寻求解决方案。 我有点失望。 如果微软能够获得MSDN样本,那将非常有用。 我确信必须有一种简单的方法来存档。 现在的情况 感谢Andrei Gavrila和jberger我存档创建一个显示内容的节点(参见下面的代码),但仍有两个问题: – 没有设计师支持 – 边框(参见xaml)未在设计器中显示,并且在应用程序时未显示正在运行甚至没有保证金 public class NodeContent : ContentControl { static NodeContent() { DefaultStyleKeyProperty.OverrideMetadata(typeof(NodeContent), new FrameworkPropertyMetadata(typeof(NodeContent))); } } public partial class Node : UserControl, INotifyPropertyChanged { UIElementCollection _Elements; public […]

如何在WPF中创建模板窗口?

所以我正在构建一个具有大量窗口的应用程序,所有窗口都具有相同的基本布局: 主窗口 顶角有一个标志 标题栏 底部的状态显示器 窗口特定控件的区域。 目前我必须在每个窗口重新创建这个结构。 理想情况下,我希望将这种布局编码在一个地方,也许是为了便于使用,可能是自定义的Window子类。 有没有人有任何关于如何开始或以前遇到类似问题的经验的线索?

仅在视图(不是窗口)上的WPF MVVM模态覆盖对话框

我对MVVM架构设计很陌生…… 我最近在努力寻找一个已经为此目的编写的合适控件,但没有运气,所以我重新使用了来自另一个类似控件的部分XAML并自行制作。 我想要实现的是: 有一个可重用的View(usercontrol)+ viewmodel(要绑定到),以便能够在其他视图中使用作为模式覆盖,显示禁用视图其余部分的对话框,并在其上显示一个对话框。 我是如何实现它的: 创建一个视图模型,它接受字符串(消息)和动作+字符串集合(按钮) viewmodel创建一组调用这些操作的ICommands 对话框视图绑定到其视图模型,该视图模型将作为另一个视图模型(父级)的属性公开 对话框视图被放入父级的xaml中,如下所示: pseudoXAML: 因此,modal dialog从Customer视图模型的DialogModel属性获取datacontext,并绑定命令和消息。 它也会绑定到对话框显示(绑定到IsShown)时需要禁用的其他元素(此处为’content’)。 当您单击对话框中的某个按钮时,将调用关联的命令,该命令只调用在viewmodel的构造函数中传递的关联操作。 这样我就可以从Customer视图模型中调用对话框视图模型上的对话框的Show()和Hide(),并根据需要更改对话框视图模型。 它会一次只给我一个对话但是没问题。 我还认为对话框视图模型将保持单一性,因为unit testing将涵盖在构造函数中使用Actions创建之后应该创建的命令的调用。 对话框视图会有几行代码隐藏,但非常小而且非常愚蠢(setter getters,几乎没有代码)。 我关心的是: 这个可以吗? 我有什么问题可以进入吗? 这会破坏一些MVVM原则吗? 非常感谢! 编辑:我发布了我的完整解决方案,以便您可以更好地了解。 欢迎任何建筑评论。 如果您看到一些可以更正的语法,则post会被标记为社区维基。

如何在文件夹中的StackPanel WPF中添加多个图像?

我想给folder path并从该文件夹路径如果该folder contains 3 images我想display those 3 images到StackPanel WPF Form 我尝试过类似下面的内容,可以正常使用一个图像但是如何加载来自给定文件夹的所有图像? private void Window_Loaded(object sender, RoutedEventArgs e) { Image i = new Image(); BitmapImage src = new BitmapImage(); src.BeginInit(); src.UriSource = new Uri(“mypic.png”, UriKind.Relative); // how to load all images from given folder? src.EndInit(); i.Source = src; i.Stretch = Stretch.Uniform; //int q = src.PixelHeight; // […]

如何在运行时创建WPF UserControl的映像

我创建了一个WPF应用程序,它有一个Canvas ,我在其上放置UserControls , UserControls可以移动和resize(就像Windows窗口一样)。 现在我已经发现这对于旧PC而言可能非常慢,这是一个问题。 作为一个解决方案,我考虑生成一个显示UserControl的图形,并在调整Control /拖动Control时显示,以防止WPF永久重新计算所有元素。 唯一的问题是我不知道如何生成这个图像。 是否有类似函数在.Net中执行此操作? 或者我怎么能自己做呢?

WPF – 使用鼠标事件在canvas上绘图

我在canvas上处理鼠标事件时遇到问题。 我想用鼠标绘制它,我想出了这些事件处理程序,但是当我开始绘图时它们什么都不做。 private void paintSurface_MouseDown(object sender, MouseButtonEventArgs e) { if (e.ButtonState == MouseButtonState.Pressed) currentPoint = e.GetPosition(this); } private void paintSurface_MouseMove(object sender, MouseEventArgs e) { if (e.LeftButton == MouseButtonState.Pressed) { Line line = new Line(); line.Stroke = SystemColors.WindowFrameBrush; line.X1 = currentPoint.X; line.Y1 = currentPoint.Y; line.X2 = e.GetPosition(this).X; line.Y2 = e.GetPosition(this).Y; currentPoint = e.GetPosition(this); paintSurface.Children.Add(line); } } […]

按钮样式的内容仅出现在一个Button实例中

我有一个Viewbox: 然后我将其包含在样式中: 现在我使用SampleStyle创建了许多按钮 但是, 只有一个按钮具有椭圆(视图框) 如何让所有按钮都显示/显示椭圆?

WPF按钮鼠标hover图像

我正在学习C#和XAML来构建Windows应用程序。 我想创建一个以图像为背景的按钮。 但是当鼠标hover在按钮上时,按钮的背景应该变为另一个“突出显示”的图像。 我试图将背景图像添加到Resources.resx中。 我不得不使用xaml样式创建一个自定义按钮来摆脱wpf按钮的默认高亮效果。 我从SO上找到的一些代码创建了一个自定义按钮。 代码是(在新的资源字典中): 我放了什么,以便背景更改为另一个图像,无论是在我的resources.resx或其他位置? (不确定将图像放在何处访问它)。 我搜索了SO,但我找到的解决方案并不完全是我正在处理的问题。 如果这是一个重复的问题,我道歉。 摘要: 如何在XAML中更改鼠标上的按钮的背景图像? 我在哪里放置图像以便可以在触发器代码中访问它? 更新这是我作为触发操作,但图像不更新。 我确保将图像构建操作设置为资源并将其放在名为Resources的文件夹中。 代码是: 文件结构是 Simon Simon Resources all the images Fonts bin obj Properties 解 以下是允许在按钮上进行鼠标hover图像更改的完整代码: 对于实际图像,我将它放在根目录中的Resources文件夹中。 使用visual studio中的资源工具导入图像后,我在“属性”窗格中将图像构建设置更新为“ 资源 ”。 感谢dbaseman的解决方案

在ListView WPF中设置项目焦点

有没有办法从WPF中的WinForms完成此function? ListView.FocusedItem = ListView.Items[itemToFocusIndex] 我正在尝试在WPF ListView中的项目上手动设置焦点 (而不是选择)。 来自System.Windows.Controls 。 谢谢。