通过添加属性自定义现有控件

时间:2010-07-09 01:17:53

标签: silverlight silverlight-4.0 accordion

我正在尝试创建一个自定义的AccordionItem,它可以取标记属性值“Rank”:

<local:MyAccItem Header="" Content="" Rank="" /> 

这不是真的有效,因为我的控件只包含一个包含原始Accordion项目的网格。我尝试过操作模板,并创建了一个带有修改模板的资源文件。但是我想改变我已经模板化的AccordionItem中的Ellipse对象的大小,以便它根据该项的等级进行更改。我真的卡住了。帮助赞赏。

2 个答案:

答案 0 :(得分:2)

您需要在MyAccItem UserControl的代码隐藏中创建依赖项属性“Rank”。我假设你的排名是一个int?如果是这样,你可以将它放在你的代码中,构建,然后它应该在你的XAML中工作。

#region Rank (DependencyProperty)

    /// <summary>
    /// Rank
    /// </summary>
    public int Rank
    {
        get { return (int)GetValue(RankProperty); }
        set { SetValue(RankProperty, value); }
    }
    public static readonly DependencyProperty RankProperty =
        DependencyProperty.Register("Rank", typeof(int), typeof(MyAccItem),
        new PropertyMetadata(0, new PropertyChangedCallback(OnRankChanged)));

    private static void OnRankChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        ((MyAccItem)d).OnRankChanged(e);
    }

    protected virtual void OnRankChanged(DependencyPropertyChangedEventArgs e)
    {

    }

    #endregion Rank (DependencyProperty)

答案 1 :(得分:0)

#region Rank 
#endregion Rank 

此标记用于在它们之间封装代码,因此您可以展开和折叠其中的代码。

只是为了让事情井井有条,仅此而已!