有人可以帮我解决这个问题吗?)在我的 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。 有没有一种简单(或正确的方法)可以做到这一点?
最佳答案
有两种方法可以做到这一点:您可以为添加 DependencyProperty 的 ListBox 编写一个子类,或者您可以编写一个附加属性。
在您的情况下,您可能想要编写一个添加该属性的子类。尝试这样的事情:
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); }
}
}
这将添加一种新类型的列表框,您可以将其添加到您的 xaml 代码中。它将具有与常规 ListBox 相同的所有属性,但它还将具有 ConnectorStyle 属性。
如果您需要响应列表框中 ConnectorStyle 属性的更改,那么您应该更改依赖属性的代码,但这超出了本问题的范围。
在 XAML 中它应该是:
<local:ListBoxEx
ConnectorStyle="{StaticResource ConnectorLineStyle}"/>
关于c# - 如何在 SilverLight 中为元素创建自己的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7632514/