56得票1回答
何时应该使用装饰器?

WPF很棒,因为有许多方法可以实现你的目标。例如,据我所知,装饰器可以向UI元素添加一些控件,但我认为通过包含附加元素的自定义控件也可以实现相同的行为。 那么,我的问题是:在什么情况下应该优先使用装饰器,而不是更复杂(但我认为更灵活)的自定义控件? 请考虑到我广泛使用MVVM模式,并且我想将...

22得票1回答
WPF:忽略覆盖层/装饰器上的鼠标点击,但处理MouseEnter事件

我真正想要的是一个忽略鼠标“点击”事件但仍能捕获鼠标“进入和离开”事件的IsHitTestVisible版本。 背景: 每当控件获取焦点时,都会弹出一种信息覆盖层。这是一个需求,因此我无法取消此行为。这是使用包含填充有图像刷的矩形形状的附加装饰器实现的。所有控件都是以编程方式创建的,没有涉及...

20得票2回答
为什么我的装饰器在应用它的元素改变时没有重新渲染?

在我正在构建的用户界面中,每当面板中的控件获得焦点时,我希望装饰该面板。因此,我处理了IsKeyboardFocusWithinChanged事件,并在元素获得焦点时添加装饰器,并在失去焦点时移除装饰器。这似乎运行良好。 我的问题是,如果装饰元素的边界发生更改,则装饰器不会重新渲染。例如,在...

20得票1回答
WPF修饰层位于窗口之外

我有一个带有文本框控件的WPF窗口。当文本框具有键盘焦点时,该控件会显示装饰器。 如下面的屏幕截图所示,装饰器受限于窗口的边界。如何使整个装饰器都显示出来? 装饰器模板为:<DataTemplate x:Key="ContextualInfoDataTemplate"> ...

12得票4回答
GetAdornerLayer 返回 null 的神秘原因

我一直在使用同样的代码版本来开发我的应用,并且没有遇到任何问题,但是现在却神秘地收到以下的NullReferenceException异常:this.Loaded += delegate { deleteBrush = new DeleteBrushAdorner( backgroun...

10得票3回答
WPF修饰器剪裁

我在一个ScrollViewer中有一个ItemsControl。 ItemsControl 中的项会扩展到一个DataTemplate,其基本上由一个Adorner组成。 现在的问题是,当滚动时,Adorner的可视子元素会显示在ScrollViewer之外。假设我从水平偏移量0滚动到10...

10得票2回答
如何在WPF中的控件顶部显示进度条

在一个WPF UserControl中,我需要调用一个Web服务。我在单独的线程上进行此调用,但是我想通知用户调用可能需要一些时间。 WebMethod返回一个对象集合,并将其绑定到UC中的ListBox上。到目前为止,一切都很好...... 这部分工作得非常好。然而,我想在调用期间显示进度...

10得票2回答
WPF装饰层何时首次可用?

我想给我的UserControl添加一个覆盖效果,我知道在WPF中这时需要使用adorner。但是我对它们的工作原理有些困惑。我认为adorner层被WPF运行时隐式处理,因此应该始终可用。 但当我在代码中创建我的UserControl实例时,那里没有adorner层。以下代码会引发异常:v...

9得票2回答
能否清除装饰层?

我可能误解了WPF中adorner layers的概念,但我成功地将一个TextBlock添加到了StackPanel的adorner layer。 我该如何清除adorner layer?比如说,使StackPanel不再具有TextBlock在其adorner layer中?

8得票2回答
如何在视图模型重新加载绑定的数据时显示“正在加载...”覆盖层

我想做一件听起来非常简单的事,但我发现很难实现。 假设有一些内容需要进行缓慢加载操作,例如从本地SQL检索可观察列表并需要几秒钟。在此期间,我希望通过“正在加载…”文本或其他“请稍候”类型的内容叠加在内容呈现器(例如Groupbox)上。 我很快得出结论,在操作之前和之后简单地切换绑定到U...