gpt4 book ai didi

Silverlight 2.0 - 将域对象数据绑定(bind)到 UserControl

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

我开始使用 Silverlight。我想在 UI 上显示消息列表,但数据绑定(bind)对我不起作用。

我有一个消息类:

public class Message 
{
public string Text { get; set; }
...
}

我的消息显示 Silverlight 用户控件具有消息依赖属性:

public partial class MessageDisplay : UserControl
{
public static readonly DependencyProperty MessageProperty =
DependencyProperty.Register("Message", typeof(Message),
typeof(MessageDisplay), null);

public MessageDisplay()
{
InitializeComponent();
}

public Message Message
{
get
{
return (Message)this.GetValue(MessageProperty);
}

set
{
this.SetValue(MessageProperty, value);
this.DisplayMessage(value);
}
}

private void DisplayMessage(Message message)
{
if (message == null)
{
this.MessageDisplayText.Text = string.Empty;
}
else
{
this.MessageDisplayText.Text = message.Text;
}
}
}

然后在我的主控件xaml中

    <ListBox x:Name="MessagesList" Style="{StaticResource MessagesListBoxStyle}">
<ListBox.ItemTemplate>
<DataTemplate>
<Silverbox:MessageDisplay Message="{Binding}"></Silverbox:MessageDisplay>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox

然后我在 control.xaml.cs 代码中绑定(bind):

    this.MessagesList.SelectedIndex = -1;
this.MessagesList.ItemsSource = this.messages;

数据绑定(bind)没有报错,列表中的项数似乎正确,但是 MessageDisplay 的 Message 属性 setter 中的断点从未命中,消息也从未正确显示。

我错过了什么?

最佳答案

您的 Message 属性可能是由数据绑定(bind)设置的,它绕过了您的实际 Message 属性(不是依赖项)。要解决此问题,请在该属性上添加一个 PropertyChangedCallback。

public static readonly DependencyProperty MessageProperty = 
DependencyProperty.Register("Message", typeof(Message), typeof(MessageDisplay),
new PropertyMetadata(
new PropertyChangedCallback(MessageDisplay.MessagePropertyChanged));


public static void MessagePropertyChanged(DependencyObject obj, DependecyPropertyChangedEventArgs e)
{
((MessageDisplay)obj).Message = (Message)e.NewValue;
}
  1. PropertyMetadata
  2. PropertyChangedCallback

关于Silverlight 2.0 - 将域对象数据绑定(bind)到 UserControl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/328906/

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