如何在SilverLight中为元素创建自己的属性
本文关键字:元素 创建 自己的 属性 SilverLight | 更新日期: 2023-09-27 18:10:28
有人能帮我解决这个问题吗?在我的XAML中,我有Listbox元素。我想添加我的用户属性到它(在我的情况下- ConnectorStyle)
我的XAML代码:
<ListBox ItemsSource="{Binding Nodes}" ItemsPanel="{StaticResource CanvasItemsPanelTemplate}"
ItemTemplate="{StaticResource NodePictureTemplate}"
ItemContainerStyle="{StaticResource CanvasItemStyle}"
ConnectorStyle="{StaticResource ConnectorLineStyle}"/>
在我的模型中,我准备了这个属性:
public partial class MainPage : UserControl
{
public static readonly DependencyProperty ConnectorStyleProperty = DependencyProperty.Register(
"ConnectorStyle", typeof(Style), typeof(NodePicture), null);
public MainPage()
{
InitializeComponent();
}
public Style ConnectorStyle
{
get { return (Style)GetValue(ConnectorStyleProperty); }
set { SetValue(ConnectorStyleProperty, value); }
}
}
但这是一个错误-无法解决ConnectorStyle。是否有一种简单的(或正确的)方法来做到这一点?
有两种方法可以做到这一点:你可以为ListBox编写一个子类来添加DependencyProperty,或者你可以编写一个附加的属性。
在您的情况下,您可能想要编写一个添加属性的子类。试试这样做:
public class MyListBox : ListBox
{
public static readonly DependencyProperty ConnectorStyleProperty = DependencyProperty.Register(
"ConnectorStyle", typeof(Style), typeof(MyListBox), null);
public Style ConnectorStyle
{
get { return (Style)GetValue(ConnectorStyleProperty); }
set { SetValue(ConnectorStyleProperty, value); }
}
}
这将添加一个新的ListBox类型,你可以在你的xaml代码中添加。它将具有与常规ListBox相同的所有属性,但它也将具有ConnectorStyle属性。
如果你需要响应列表框中ConnectorStyle属性的更改,那么你应该更改Dependency属性的代码,但这超出了这个问题的范围。
在XAML中应该是:
<local:ListBoxEx
ConnectorStyle="{StaticResource ConnectorLineStyle}"/>