Events 使自定义控件或自定义面板在UWP中的设计时接收事件
如何使自定义控件或自定义面板在UWP中的设计时接收事件?Events 使自定义控件或自定义面板在UWP中的设计时接收事件,events,uwp,design-time,Events,Uwp,Design Time,如何使自定义控件或自定义面板在UWP中的设计时接收事件? 例如,自定义控件可以在调整大小时接收事件,自定义面板可以在另一个控件被推入时接收事件。如果要在自定义控件调整大小时接收事件,可以订阅SizeChanged事件。当控件大小更改时,将调用SizeChanged事件,然后您可以从sizechangedventargs处理新大小或以前的大小 <Button SizeChanged="Button_SizeChanged"/> private void Button_SizeChan
例如,自定义控件可以在调整大小时接收事件,自定义面板可以在另一个控件被推入时接收事件。如果要在自定义控件调整大小时接收事件,可以订阅
SizeChanged
事件。当控件大小更改时,将调用SizeChanged
事件,然后您可以从sizechangedventargs
处理新大小或以前的大小
<Button SizeChanged="Button_SizeChanged"/>
private void Button_SizeChanged(object sender, SizeChangedEventArgs e)
{
// do some stuf
}
可以在调整大小时接收事件,而在自定义面板中按下另一个控件时接收事件
您可以在方法中调用自定义事件。因为ArrangeOverride实现的必要模式是通过Panel.Children中的每个元素进行循环。始终对每个元素调用Arrange方法
public class BoxPanel : StackPanel
{
public event EventHandler<ElementEventArgs> AddedElement;
protected override Size ArrangeOverride(Size finalSize)
{
if (Children.Count > 0)
{
UIElement ele = Children.Last<UIElement>();
if (ele != null && AddedElement != null)
{
this.AddedElement(this, new ElementEventArgs(ele));
}
}
return base.ArrangeOverride(finalSize);
}
}
public class ElementEventArgs : EventArgs
{
private UIElement newElement;
public UIElement NewElement { get => newElement; set => newElement = value; }
public ElementEventArgs(UIElement ele)
{
this.newElement = ele;
}
}
这些活动是设计时的活动吗?
public class BoxPanel : StackPanel
{
public event EventHandler<ElementEventArgs> AddedElement;
protected override Size ArrangeOverride(Size finalSize)
{
if (Children.Count > 0)
{
UIElement ele = Children.Last<UIElement>();
if (ele != null && AddedElement != null)
{
this.AddedElement(this, new ElementEventArgs(ele));
}
}
return base.ArrangeOverride(finalSize);
}
}
public class ElementEventArgs : EventArgs
{
private UIElement newElement;
public UIElement NewElement { get => newElement; set => newElement = value; }
public ElementEventArgs(UIElement ele)
{
this.newElement = ele;
}
}
<local:BoxPanel x:Name="MyBox" AddedElement="MyBox_AddedElement">