Tag: wpf

为什么我的数据绑定会看到真实值而不是强制值?

我正在编写一个真正的NumericUpDown/Spinner控件作为练习来学习自定义控件创作。 我有大部分的行为,我正在寻找,包括适当的强制。 然而,我的一项测试揭示了一个缺陷。 我的控件有3个依赖项属性: Value , MaximumValue和MaximumValue 。 我使用强制来确保Value保持在最小值和最大值之间,包括在内。 例如: // In NumericUpDown.cs public static readonly DependencyProperty ValueProperty = DependencyProperty.Register(“Value”, typeof(int), typeof(NumericUpDown), new FrameworkPropertyMetadata(0, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault | FrameworkPropertyMetadataOptions.Journal, HandleValueChanged, HandleCoerceValue)); [Localizability(LocalizationCategory.Text)] public int Value { get { return (int)this.GetValue(ValueProperty); } set { this.SetCurrentValue(ValueProperty, value); } } private static object HandleCoerceValue(DependencyObject d, object baseValue) { NumericUpDown o […]

模糊半透明forms的背景(如Aero玻璃)

我有一个无边框,不可resize的WPF表单(WindowStyle = None,allowsTransparency = True,ResizeMode = NoResize),具有半透明背景。 这是一张图片,显示了一个半透明的红色矩形,现在看起来如何,在记事本上运行: 然而,我希望背景模糊,就像Aero玻璃如何做到这一点,除了没有所有花哨的窗口边框和带条纹的彩色背景 – 我想自己处理。 这是我想要它的样子的模型: 我怎样才能以最有效的方式实现这一目标? WinForms或WPF对我来说很好。 希望它应该使用Aero玻璃使用的相同的东西(我很好,它只与启用Aero一起工作),而不是疯狂的东西,如捕捉下面的屏幕区域作为位图和模糊。 这是我不想要的图片: 我知道这是可能的,我知道怎么做,但我不希望整个Aero玻璃窗口镀铬,或边框和标题栏,或窗口有用户设置的Aero玻璃颜色,只是效果模糊窗口/窗体下面的任何东西。

WPF C# – 更改菜单背景的画笔

有谁知道如何更改菜单背景的画笔? 这听起来很简单,但我没有看到任何明显的方法来做到这一点。 您认为Background属性会改变它,但事实并非如此。 这是我的菜单的样子(注意默认的白色背景): 示例代码:

AvalonEdit中的双向绑定不起作用

我在我的项目中使用了AvalonEdit,它基于WPF和MVVM。 看完这篇文章后,我创建了以下课程: public class MvvmTextEditor : TextEditor, INotifyPropertyChanged { public static DependencyProperty DocumentTextProperty = DependencyProperty.Register(“DocumentText”, typeof(string), typeof(MvvmTextEditor), new PropertyMetadata((obj, args) => { MvvmTextEditor target = (MvvmTextEditor)obj; target.DocumentText = (string)args.NewValue; }) ); public string DocumentText { get { return base.Text; } set { base.Text = value; } } protected override void OnTextChanged(EventArgs e) { RaisePropertyChanged(“DocumentText”); base.OnTextChanged(e); […]

可观察的集合属性已更改为集合中的项目

我有一个ObservableCollection 。 我已将它绑定到ListBox控件,我已将SortDescriptions到ListBox上的Items集合中,以使列表按我的方式排序。 当在子元素上更改任何属性时,我想在任何时候使用列表。 我的所有子元素都实现了INotifyPropertyChanged 。

在xaml中访问DisplayName

如何在XAML中访问DisplayName的值? 我有: public class ViewModel { [DisplayName(“My simple property”)] public string Property { get { return “property”;} } } XAML: 有没有办法以这种或类似的方式绑定DisplayName? 最好的想法是使用此DisplayName作为Resources的关键,并从Resources中提供一些内容。

我们如何在WPF应用程序中进行空闲时间处理?

有没有办法在WPF应用程序中进行空闲时间处理,相当于MFC中的OnIdle事件?

C#中的WPF类型初始化exception

我有其他人的基于WPF的.NET 3.5应用程序,我正在尝试更新到.NET 4.5。 代码在.NET 3.5下运行正常,我在Windows 7上运行Visual Studio 2013 Express。更新似乎进展顺利且代码编译良好,但是当我尝试运行应用程序时,我得到以下exception。 An unhandled exception of type ‘System.TypeInitializationException’ occurred in PresentationFramework.dll Additional information: The type initializer for ‘System.Windows.Application’ threw an exception. 以下是stacktrace中的最后几个步骤。 PresentationFramework.dll!System.Windows.Windows.Application() MiniMon.exe!MiniMon.App.App() MiniMon.exe!MiniMon.App.Main() 这是app.xaml文件。 我可以下载一个示例WPF应用程序(WPFCalculator),它运行正常,所以我尝试将我正在更新的那个剥离到示例应用程序中的内容。 我还尝试在app.xaml.cs中的代码的入口点添加断点,但是在执行该代码之前就抛出了exception。 作为最后的手段,我尝试在Windows 8上运行该应用程序,但得到了同样的错误。 如何解决这个问题?

如何实现StackPanel和UniformGrid行为的混合?

我想把元素放在一个控件中,这样它们最初就像这样(就像一个水平方向的StackPanel ): 但是,当元素堆叠到它们不再适合屏幕时,我希望它们开始表现得像这样: 像UniformGrid一样:随着元素数量的增加,它们变得更小。 什么是最好的或任何方式来做到这一点? 由于外部控件的大小是可变的(取决于用户的屏幕大小),我不能“破解”它使用一个或另一个组件,具体取决于元素的数量,因为我无法预测“打破”所需的数量屏幕。

如何覆盖默认窗口关闭操作?

在WPF中我想更改某个窗口的默认关闭行为,这样当用户点击红色关闭按钮时窗口不会关闭,它只是隐藏(并调用一些方法)。 我怎样才能做到这一点?