Tag: wpf

如何配置BitmapImage缓存?

我正面临内存泄漏问题。 泄漏来自这里: public static BitmapSource BitmapImageFromFile(string filepath) { BitmapImage bi = new BitmapImage(); bi.BeginInit(); bi.CacheOption = BitmapCacheOption.OnLoad; //here bi.CreateOptions = BitmapCreateOptions.IgnoreImageCache; //and here bi.UriSource = new Uri(filepath, UriKind.RelativeOrAbsolute); bi.EndInit(); return bi; } 我有一个ScatterViewItem ,它包含一个Image ,源是这个函数的BitmapImage 。 实际上比这复杂得多,所以我不能简单地将一个Image放入其中。 我也无法使用默认的加载选项,因为图像文件可能会被删除,因此在删除过程中会遇到访问文件的一些权限问题。 当我关闭ScatterViewItem时会出现问题,而ScatterViewItem又关闭了Image 。 但是,缓存的内存未清除。 所以在经过多次循环后,内存消耗量非常大。 我尝试在Unloaded函数期间设置image.Source=null ,但它没有清除它。 如何在卸载期间正确清除内存?

如何在C#中查找Scrollviewer的垂直滚动条宽度

我有一个ScrollViewer,我正在显示Vertical Scrollbar,现在我想改变系统的分辨率,我想得到滚动条的宽度。 我通过One StackOverflow Post他们提到检查SystemParameters.ScrollWidth属性,但我再次找到他们的任何帮助。 任何人都可以帮我解决我的问题。 任何答案将不胜感激。

为什么在MultiBinding中转换值时会得到DependencyProperty.UnsetValue?

我有一个非常简单的IMultiValueConverter,它只是OR的两个值。 在下面的示例中,我想使用同样简单的布尔型逆变器反转第一个值。 和逆变器: public class BoolInverterConverter : IValueConverter { #region IValueConverter Members public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { if (value is bool) { return !((bool)value); } return null; } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { throw new NotImplementedException(); } #endregion } 当我包含boolInverter时,MultiValueConverter中的第一个值变为“DependencyProperty.UnsetValue”。 当我不使用转换器时没有问题(当然,不是我的目标逻辑)。 我错过了什么吗? 单步执行调试器会显示InverseBoolConverter正在反转我传递的值,但该值不会被“发送”到MultiValueConverter。

如何在uwp中获得触摸输入?

我需要的是,如果用户用一根手指触摸canvas控件,绘图过程必须开始,如果用户用两根手指触摸canvas控件,canvas区域必须滚动/平移。 我怎样才能做到这一点? 谢谢

使用模板在hover/单击时更改按钮背景图像

我有一个吨和吨按钮的应用程序,我想用hover/点击效果更加花哨。 我希望可以使用样式模板,所以我不必为每个按钮编写触发器,但我有点陷入这个阶段。 我想你通过这段代码片段了解了我想要实现的目标: 和模板文件: 我该如何解决这个问题? 是否有可能以这种方式实现,或者我是否需要使用数百万个触发器来混乱我的代码?

使用C#更改WPF Listbox SelectedItem文本颜色和高亮/背景颜色

我试图在运行时更改突出显示的(选定的)颜色和wpf列表框的突出显示的文本颜色。 我尝试创建一个样式并应用如下: Style s = new Style(typeof(ListBox)); s.Resources.Add(SystemColors.HighlightBrushKey, Setting.ListSelectedColor); s.Resources.Add(SystemColors.HighlightTextBrushKey, Setting.ListSelectedTextColor); lstGames.Style = s; 但这似乎什么都不做。 有没有办法实现这个目标? 编辑: 根据建议,我尝试使用DynamicResources来实现这一目标,但到目前为止,这还没有成功。 我的代码: DYNAMICRESOURCES 列表框 在C#中应用资源 this.Resources[“ListSelectedColor”] = SETING.ListSelectedColor.Color; this.Resources[“ListTextSelectedColor”] = SETTING.ListSelectedTextColor.Color;

样式数据网格表 – 左上角

我正在设计一个数据表样式,但我无法弄清楚如何设置数据网格的左上角字体。 这张照片中的灰色区域是: 你知道怎么做吗? 到目前为止,这是我的风格:

在未处理的exception之后终止应用程序

我在WPF应用程序中遇到问题。 我写了这段代码: public partial class App : Application { public App() { AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(MyHandler); } void MyHandler(object sender, UnhandledExceptionEventArgs e) { Exception exception = e.ExceptionObject as Exception; MessageBox.Show(exception.Message, “ERROR”, MessageBoxButton.OK, MessageBoxImage.Error); } … } 但是当发生未处理的exception时,屏幕上会出现很多MessageBox(例外情况发生在定时例程中),关闭其中一个后,Windows会发出一个未处理的exception信号。 如何避免多个MessageBoxes? 如何避免未处理exception的消息? 如何在exception后终止应用程序? 您可以轻松地假设,我想用MessageBox显示一条消息(但只有一条),然后在没有任何其他消息的情况下终止应用程序。 在之前与此论点相关的问题中 , Kyle Rozendo告诉我使用DispatcherUnhandledException。 是否有必要或我编写的代码是否足够? 谢谢。

WPF应用程序清单文件

我有一个WPF应用程序,我希望它能够始终作为管理员启动。我已经阅读了很多关于它的内容,似乎我必须创建自己的清单文件并将其传递给应用程序属性,以便在运行时int以管理员身份启动。 应用程序本身加载一个文件,有时文件可能需要管理员访问权限,因此可以修改。这就是为什么我在安装应用程序之后寻找一种方法,以便能够始终以管理员模式启动。

在IEnumerable上使用Observable Collection的优点和缺点

我试图决定是否要将所有IEnumerable集合切换到Observable Collections。 我找不到对此的好解释。 可理解的术语中Observable Collection的优点和缺点是什么?