Tag: wpf

在WPF DataGrid中转换并使用DataTable?

在正常的WinForm应用程序中,您可以这样做: DataTable dataTable = new DataTable(); dataTable = dataGridRecords.DataSource; 但是如何使用WPF数据网格呢? dataTable = dataGridRecords.ItemsSource; 也不会工作。

在分离项目时,MVVM会显示来自VM的新窗口

我的问题涉及到创造了一千零一个主题的问题,如果我忽略了我的问题的答案,我很抱歉,但就我看来,没有人真的可以回答我的问题。 例如: 在MVVM WPF中打开新窗口 如果您只使用一个WPF项目(包括模型,虚拟机和视图),那么答案是可以的,但是因为我正在学习如何以正确的方式实现MVVM(我已经多次阅读,最佳实践是创建单独的类lib (dll的)对于模型,viewmodel和一个单独的gui项目)似乎在我眼中不起作用,因为如果我想创建一个像IWindowService这样的接口(在之前的url上描述,也在这里 ,它是不可能访问Window或Control类的因为那时我应该引用gui项目,并且模式的整个目标都会被破坏。 所以我的问题是如何显示一个新的窗口(使用新的viewmodel),例如MainViewModel,同时尊重松散耦合的MVVM原则和单独的项目。 我正在努力实现的更深入的示例: 我有以下结构: MODEL (DLL项目) 轮廓 VIEWMODEL (DLL项目) MainViewModel AddProfileViewModel VIEW(WPF) (exe项目) 主窗口 AddProfileWindow 我打开MainWindow,我想按下AddProfile按钮,然后AddProfileWindow需要显示附加的AddProfileViewModel。

使用C#加载内存泄漏的图像

我的应用程序中存在内存泄漏问题,它会加载大量图像。 我对C#很陌生,并认为我的内存泄漏问题已经过去了。 我无法弄清楚问题 – 也许我正在使用一些我无法正确处理的非托管模块? 为了说明我的问题,我简化了导致问题的核心,并将其转移到一个干净的项目中。 请注意,这都是愚蠢的代码,不能反映它来自的原始应用程序。 在测试应用程序中,我有2个按钮,触发两个事件。 按钮1 – 创建:将对象设置为datacontext。 这将通过将对象设置为DataContext来加载图像并使它们保持活动状态: var imgPath = @”C:\some_fixed_path\img.jpg”; DataContext = new SillyImageLoader(imgPath); 按钮2 – 清理:我的理解是,如果我放开持有SillyImageLoader并再次保存图像的引用,那么这将被删除。 我还明确地触发垃圾收集,只是为了在删除引用后立即查看内存量。 DataContext = null; System.GC.Collect(); 测试时我正在加载一个974KB的jpeg图像。 保持30位图表示可以将我的应用程序的内存使用量从大约18MB增加到大约562MB。 好。 但是当我清理时,内存只下降到~292MB。 如果我重复Create + CleanUp,我还剩下另外250MB内存。 所以显然有人仍然持有某种东西。 这是SillyImageLoader代码: namespace MemoryLeakTest { using System; using System.Drawing; using System.Windows; using System.Windows.Interop; using System.Windows.Media.Imaging; public class SillyImageLoader { private […]

如何使刷子在中间没有线条的情况下变得光滑

大家好,就像你在之前的画笔中看到的那样,中间有一些线条, 如何让它顺利进行并不是那么顺利? (如何删除那些行)我用混合创建它

如何在WPF中读取base64图像?

我知道如何在WinForms中做到这一点 byte[] binaryData = Convert.FromBase64String(bgImage64); image = Image.FromStream(new MemoryStream(binaryData)); 但我如何在WPF中做同样的事情?

使用WPF按钮复制和粘贴命令

我创建了一个包含按钮的工具栏。 其中3个按钮是剪切复制和粘贴。 我设置了每个按钮的命令来剪切复制和粘贴属性,但是当我运行程序时,没有按钮甚至可以点击。 他们是残疾人我猜吗? 我正在尝试将文本框中的文本框复制并粘贴到tabcontrol中。 任何帮助表示赞赏。

数据绑定从XAML到后面的代码

我在代码后面有这个Text依赖属性: public static DependencyProperty TextProperty = DependencyProperty.Register(“Text”, typeof(string), typeof(MainWindow), new PropertyMetadata(“Hello world”)); public string Text { get { return (string)GetValue(TextProperty); } set { SetValue(TextProperty, value); } } 我想将label的内容绑定到Text属性,以便标签显示Text属性的实际值,反之亦然。 我该怎么做 ? 我已经做了一段时间了但是现在我不记得了 – 这很简单。 最简单的代码将被接受。

视图模型的MVVMinheritance

我想知道如何在MVVM模式中使用View Models进行inheritance。 在我的应用程序中,我有一个类似于以下内容的数据模型: class CustomObject { public string Title { get; set; } } class CustomItem : CustomObject { public string Description { get; set; } } class CustomProduct : CustomItem { public double Price { get; set; } } 在我的应用程序中,我有一个ViewModelBase类,然后将有以下View Models: CustomObjectViewModel CustomItemViewModel CustomProductViewModel CustomObjectViewModel的粗略实现类似于以下内容: class CustomObjectViewModel : ViewModelBase { private readonly CustomObject _customObject; […]

WPF如何创建这样的横向菜单(Modern-UI)

我是WPF的新手,我想为我的应用程序创建一个横向菜单。 搜索我发现这张图片的想法: 我的想法是在图片中添加一个旁边的按钮。 当用户单击按钮时,它会展开按钮以显示子菜单选项。 一次只能扩展一个菜单。 我的第一个测试是使用列表框,在每个按钮内部使用Expander,然后使用stackpanel添加子菜单选项。 它看起来像这样: 这是我的XAML: 所以它有我想要的行为,但在方面不是很相似。 如何改善这一点,使其更像第一张图片? 谢谢! UPDATE 我想要的是在每个组标题旁边添加一个图标,如上面的te按钮,并理想地替换扩展器图标,然后我用超链接替换RadioButtons。 谢谢!

在WPF中调整图像大小

我有一个图像,我想重新resize,需要保存在我的临时文件夹中。 我试过的是如下: UIElement uie = CanvasHost.Child; int width = 800; int height = (int)((width / (double)((FrameworkElement)uie).Width) * (int)((FrameworkElement)uie).Height); RenderTargetBitmap rtb = new RenderTargetBitmap(width, height, 96, 96, PixelFormats.Pbgra32); rtb.Render(uie); string dir = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @”\temp\”; if (!Directory.Exists(dir)) Directory.CreateDirectory(dir); long size = 0; string filePath = dir + DateTime.Now.Ticks.ToString() + (isPng ? “.png” : “.jpg”); BitmapEncoder enc […]