c# - 如何在 SilverLight 中为元素创建自己的属性

标签 c# asp.net silverlight silverlight-4.0 silverlight-3.0

有人可以帮我解决这个问题吗?)在我的 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/

相关文章:

asp.net - 如何在不同机器上的IIS和SQL Server之间建立信任?

c# - 将一种语言的语音转换为另一种语言

silverlight - 是否可以使用PowerShell自动化Silverlight?

c# - Xamarin 表单工具栏项未显示在 View 中

c# - 如何从代码隐藏中调用这个 javascript 函数

c# - 在 WP7 和 8 上递归删除 IsolatedStorage 中的目录的简便方法

c# - WebForms 事件中的异步

.net - Silverlight和桌面应用程序之间如何通信?

c# - 投影条件评估不正确

c# - 析构函数的垃圾收集器行为