如何取消订阅派生控件中的已加载事件

本文关键字:控件 事件 加载 派生 何取消 取消 | 更新日期: 2023-09-27 18:08:59

我只是在玩网格类,使其为"cleaver"。所以我希望能够在xaml中使用它,并指定我想要多少行,或列等,我有下面的代码。这一切都很好,我使用加载的事件来添加行和列,但现在我在想我应该如何从这个事件退订?我找不到怎么做的直接信息?

public class MyFormGrid : Grid
{
    public static readonly DependencyProperty ColumnsProperty =
        DependencyProperty.Register("Columns", typeof(int), typeof(ASLFormGrid), new PropertyMetadata(0));
    public static readonly DependencyProperty RowsProperty =
        DependencyProperty.Register("Rows", typeof(int), typeof(ASLFormGrid), new PropertyMetadata(0));
    public MyFormGrid()
    {
        Loaded += MyGrid_Loaded;
    }
    public int Columns
    {
        get { return (int)GetValue(ColumnsProperty); }
        set { SetValue(ColumnsProperty, value); }
    }
    public int Rows
    {
        get { return (int)GetValue(RowsProperty); }
        set { SetValue(RowsProperty, value); }
    }
    private void MyGrid_Loaded(object sender, RoutedEventArgs e)
    {
        for (var i = 0; i < Columns; i++)
        {
            ColumnDefinitions.Add(new ColumnDefinition());
        }
        for (var i = 0; i < Rows; i++)
        {
            RowDefinitions.Add(new RowDefinition(););
        }
    }
}

亲切的问候

如何取消订阅派生控件中的已加载事件

这可以很容易地放在您加载的事件处理程序中:

public class MyFormGrid : Grid
{
    ...
    public MyFormGrid()
    {
        Loaded += MyGrid_Loaded;
    }
    ...
    private void MyGrid_Loaded(object sender, RoutedEventArgs e)
    {
        Loaded -= MyGrid_Loaded;
        ...
    }
}