gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 20:30:52 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com