【问题标题】:Notify on ArrangeOverride通知安排覆盖
【发布时间】:2014-03-05 16:40:10
【问题描述】:
我有一个带有自定义面板的项目控件。基于这个itemsControl我正在写一个Behavior(行为)
我需要的是,每当为我的 ItemsPanel 安排覆盖时,我的行为都应该得到通知。在我的行为中,我可以访问 itemsControl 和 itemsPanel。
一种方法是我可以从 ItemsPanel 覆盖引发一个事件并在我的行为中订阅它。
但是如果您有更好的解决方案,请您提出建议吗?
【问题讨论】:
标签:
c#
.net
wpf
itemscontrol
【解决方案1】:
我会尝试这样做:
-
创建一个“假”控件
class ArrangeNotifier : Control
{
public event EventHandler OnArrange;
protected override ArrangeOverride(blabla)
{
(OnArrange??delegate{})(blabla);
}
}
在您的“OnAttached”行为中,创建一个 var myNotifier = new ArrangeNotifier(),您将添加到面板 AttachedObject(这要求您的行为必须是 Behavior<Panel>)
根据您的行为订阅 myNotifier.OnArrange,并在处理程序中执行您的操作
不要忘记在你的行为的“OnDettached”中删除你的假控制
[编辑]我看错了你的问题,我猜这就是你的建议:)
我没有看到任何其他方式。