2010-07-09 39 views
0

我试图创建一个可以采取的标签属性值“排名”自定义AccordionItem:通过添加属性自定义现有的控制

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

这不是真正的工作,因为我控制只包含一个网格包含原来的Accordion项目。我曾尝试操作该模板,并使用修改后的模板创建了一个资源文件。但我想改变AccordionItem中我已经模板化的Ellipse对象的大小,以便根据该项目的等级进行更改。我真的陷入困境。帮助赞赏。

+0

请张贴一些代码 – Ozan 2010-07-09 02:08:17

回答

2

您需要在MyAccItem UserControl的代码隐藏中创建一个Dependency Property'Rank'。我假设你的等级是一个整数?如果是这样,你可以把它放在你的代码后面,编译,然后它应该在你的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) 
+0

trynig它现在...但什么是虚拟的方法? – JeroenEijkhof 2010-07-09 06:17:04

+0

...和#region Rank是什么? – JeroenEijkhof 2010-07-09 06:19:05

+0

这工作谢谢。但我不需要所有额外的东西,我不明白。如虚拟方法和'#地区...'。 – JeroenEijkhof 2010-07-09 16:07:45

0
#region Rank 
#endregion Rank 

这个标签用于封装它们之间的代码,这样你就可以扩大以及其中折叠代码。

它只是保持组织的东西,没有更多!