gpt4 book ai didi

silverlight - 如何将依赖属性绑定(bind)到 UI 以实现 silverlight 用户控件?

转载 作者:行者123 更新时间:2023-12-01 12:00:46 25 4
gpt4 key购买 nike

我尝试创建一个用户控件:

public partial class MyTextBlock : UserControl
{
public MyTextBlock()
{
InitializeComponent();
}

public static readonly DependencyProperty LabelProperty
= DependencyProperty.RegisterAttached("Label", typeof(string), typeof(MyTextBlock), null);

public string Label
{
get { return (string)GetValue(LabelProperty); }
set { SetValue(LabelProperty, value); }
}


public static readonly DependencyProperty MyTextProperty
= DependencyProperty.RegisterAttached("MyText", typeof(string), typeof(MyTextBlock), null);

public string MyText
{
get { return (string)GetValue(MyTextProperty); }
set { SetValue(MyTextProperty, value); }
}
}

它的 xaml 是:

<Grid x:Name="LayoutRoot">
<TextBlock x:Name="Title" Text="{Binding Label}" />
<TextBlock x:Name="MyText" Text="{Binding MyText}" TextWrapping="Wrap"/>
</Grid>

我想要尝试将此控件中的依赖属性绑定(bind)到 UI 元素,这样当我使用此控件时,我可以像这样设置数据绑定(bind):

 <local:MyTextBlock Label="{Binding ....}" MyText = "{Binding ....}" />

但是当我按照上面的方法操作时,它不起作用。没有数据绑定(bind),没有错误。如何解决?

最佳答案

  • 尝试在 DependencyProperty 上使用 .Register 而不是 .RegisterAttached
  • 您需要提供一个回调来设置值
  • 我认为'int'类型应该是'string'

把它们放在一起

public partial class MyTextBlock : UserControl
{
public MyTextBlock()
{
InitializeComponent();
}

public static readonly DependencyProperty LabelProperty
= DependencyProperty.Register("Label", typeof(string), typeof(MyTextBlock), new PropertyMetadata(new PropertyChangedCallback(LabelChanged)));

public string Label
{
get { return (string)GetValue(LabelProperty); }
set { SetValue(LabelProperty, value); }
}

private static void LabelChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var c = d as MyTextBlock;
if (c != null )
{
c.label.Text = e.NewValue as string;
}
}

}

关于silverlight - 如何将依赖属性绑定(bind)到 UI 以实现 silverlight 用户控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1868579/

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