Tag: wpf

使用枚举键绑定到字典的WPF数据

我有几个项目的解决方案。 在一个项目中,我的模型是一个名为ModelEnum的枚举。 然后在我的WPF项目中,我有一个具有Dictionary的ViewModel。 在我的ViewModel中,我将ValuesDictionary设置为: private Dictionary _valuesDictionary = new Dictionary(); public Dictionary ValuesDictionary { get { return _valuesDictionary; } set { _valuesDictionary = value; OnPropertyChanged(_valuesDictionary); } } 在我的XAML中我有: xmlns:model=”clr-namespace:Model.Data;assembly=Model” … 以下XAML代码段: (model:ModelEnum)ModelEnum.Enum1 给我错误“参数类型不匹配”。 我很困惑,因为我以为我把它投射到它所期望的Enum类型。 我引用了这个问题来试试它没有运气。

在WPF中动态更改网格的可见性

我有一个带TextBlock的Grid : 我以编程方式设置此TextBlock值: Title.Text = myObject.Title; 现在, myObject.Title有时可能是Null或Empty,那时我需要隐藏整个Grid 。 怎么实现这个?

将DrawingImage转换为BitmapImage

我想绘制大量的形状(线条,椭圆和……),然后将它们保存为位图或png。 我制作了图纸,问题是:如何在C# 中将DrawingImage转换为BitmapImage ? 代码是这样的: DrawingGroup drawingGroup = new DrawingGroup(); using(DrawingContext context = drawingGroup.Open()) { //make some drawing } DrawingImage drawingImage = new DrawingImage(drawingGroup) // your suggestion? DrawingImage – > BitmapImage

WPF3D如何操作与摄像机平行的平面中的对象

我正在WPF中申请。 我正在使用很多3DTools 。 我有一个四面体,里面有一个立方体。 我想在3D方向上移动立方体。 我的四面体以(0,0,0)为中心,使用轨迹球旋转(以编程方式,我在视口上有一个透明边框来捕捉事件)。 应用程序的用户认为更自然地在其中移动立方体的方法是将其始终移动到2D平面(与屏幕平行)。 因此,如果我想在屏幕中更深地移动它,我只需旋转四面体并在Y轴上移动它,例如。 我认为这可能是一个很好的解决方案。 我有问题,我想帮助解决问题:首先,当我移动四面体(在轨迹球内)时,轨迹球看起来像移动所有系统坐标。 我这样说是因为我为了调试目的画了轴,那些轴也在旋转。 但事实并非如此 – 它们只是因为轨迹球内的物体而移动(对吗?)。 编辑实际上,我认为轨迹球内部的坐标系正在发生变化。 当我在YX轴上移动立方体时,我表现不错。 但如果我稍微转一下,并尝试在Z轴上移动,我会看到它越来越大(离相机越来越近)越来越小(远离相机)。 =( 所以我的问题是如何定义一个不会被轨迹球旋转的平面? 对我来说,答案看起来像“好吧,只是在轨道球之外定义”但是,正如我所说的(和3DTools文档说的那样)我的视口上有一个边框……所以我不知道如何处理这个问题。 我的四面体在一组ScreenSpaceLines3D中。 我必须把立方体放在里面。 我的第二个问题是如何跟踪旋转的四面体顶点的位置 ? 当位置属性给我原始位置而没有别的时候,我真的很失望。 我应该保留矩阵变换,然后在我需要时应用到我的观点吗? 很抱歉很长的文字,但我真的陷入了这个没有那么多的编程问题。 我在WPF中知道,我仍然缺乏一些概念。 提前致谢, 佩德罗

combobox与WPF DataGrid中的复选框

我需要在WPF的DataGrid中显示带有复选框选项的combobox。 请提供任何解决方案。 我试过下面的代码 它会像这样输出 任何人都可以帮助加载combobox中的项目集合并更正我的代码。 CS代码: private void resultGrid_Loaded(object sender, RoutedEventArgs e) { var programs = new List(); programs.Add(new Programs(“test”, false)); programs.Add(new Programs(“test1”, false)); programs.Add(new Programs(“test2”, true)); //var grid = sender as DataGrid; resultGrid.ItemsSource = programs; Combo.ItemsSource = programs; } 而型号: public class Programs { public Programs(string Program, bool IsChecked) { this.Program = Program; this.IsChecked […]

如何识别点击的按钮属于哪个列表框项?

在WPF编程中,我有一个问题是编写按钮单击事件处理程序。 因为按钮位于列表框项目(datatemplate的一部分)内,并且当单击该按钮时,我无法分辨它属于哪个项目。 有什么解决方案吗? SOS – –

C#并行运行多个非阻塞外部程序

我需要从我的应用程序运行多个外部可执行文件的实例。 此可执行文件的平均运行时间约为3分钟。 我想重定向这些进程的输出,并在我的GUI中更新进度条。 当然,在我继续使用我的应用程序之前,我不想等待他们返回。 我想我应该为每个实例创建一个线程,并在线程完成时更新我的​​进度条。 这是正确的方法吗? 另外,您是否建议使用良好的资源/文档来了解它的工作原理? 我发现只有http://www.dotnetperls.com/threadpool 。 编辑:这些进程是基于网络的,即:运行时间可能会有很大差异,具体取决于链路延迟/带宽。 关于进度条,我想在每次进程完成时更新它。 那有处理程序吗? 稍后我将根据流程输出添加更详细的更新,以增加每个执行步骤的进度。 编辑2: 感谢您的投入。 由于我可能需要运行大量进程(最多20个),并且我不想使带宽饱和,因此我将并行运行5个最大值。 每次进程结束时,我都会递增进度计数器(对于我的进度条),然后运行另一个进度计算器直到它们全部完成,使用: Process p = new Process(); p.StartInfo.FileName = pathToApp; p.EnableRaisingEvents = true; p.Exited += OnCalibrationProcessExited; p.Start(); private void OnCalibrationProcessExited(object sender, EventArgs e) { runAnotherOne function } 这是正确的还是有更优雅的方式来实现这一目标? 我不希望我的应用程序在执行过程中被阻止。 为此使用后台工作者会更好吗?

是否可以从列表中的项目获取索引?

我的意思是,我有一个listBox,我将itemsSource属性放在列表中。 而且我想在它的绑定中显示索引。 我不知道WPF中是否可行。 谢谢。

HtmlAgilityPack – 如何在加载页面时设置自定义编码

使用以下方法加载页面时是否可以设置自定义编码? HtmlWeb hwWeb = new HtmlWeb(); HtmlDocument hd = hwWeb.load(“myurl”); 我想将编码设置为“iso-8859-9”。 我使用C#4.0和WPF。 编辑: 问题已在MSDN上得到解答。

如何剪裁非闭合几何体

介绍 我在实现剪辑时发现了一个问题(见这个 )。 它看起来像UIElement.Clip仍然呈现不可见的部分 渲染相对较小的几何体(线条仅填充 1920×1200区域~2000条垂直线条)需要花费大量时间。 当使用Clip并在屏幕外移动该几何体时(因此裁剪应该移除它的大部分)它仍然需要相同的时间(大约1秒)。 好吧,我发现使用Geometry.Combine会做一个剪辑(渲染时间按裁剪几何体后的比例减少)。 完善! 问题 Geometry.Combine无法正确处理非闭合几何体。 它产生封闭的几何形状 它看起来很难看,连接第一点和最后一点: 题 如何对非闭合数字执行裁剪(减少要渲染的几何体的数量)? 编辑 这是几何之前(图片上显示的小和平) {M0; 50L0; 50L1; 53,1395259764657L2; 56,2666616782152L3; 59,3690657292862L4; 62,4344943582427L5; 65,4508497187474L6; 68,4062276342339L7; 71,2889645782536L8; … 之后 {F1M54,9999923706055; 34,5491371154785L53,9999885559082; 37,5655174255371 53,0000114440918; 40,6309471130371 52,0000076293945; 43,4333335876465 … 注意事项在开始时改变,是M 0;50 L … ,变成F 1 M 55;34 L … F1表示NonZero填充 通过在任何方向上将光线从该点绘制到无穷大然后检查形状的一段与光线交叉的位置来确定点是否在路径的填充区域中的规则。 从零开始计数,每当一个片段从左到右穿过光线时添加一个,并且每当一个路径片段从右到左穿过光线时减去一个。 计算交叉点后,如果结果为零,则该点位于路径之外。 否则,它就在里面。 我完全不知道这意味着什么。 但也许这很重要? 编辑 […]