0

我有一个在运行时填充的自定义对象类型依赖属性。它已正确更新,并且正确的信息存储在此对象中。

但是,当我尝试将此对象的属性绑定到文本块时,没有文本出现(尽管它肯定有数据)。

所以,假设对象类型如下:

Public class CustomObject{
[Key]
 public int Id { get; set; }
 public string Name { get; set; }
 }

这个对象肯定是被填充的,我已经用断点验证了这一点。

我创建了这个对象类型的依赖属性,它肯定可以正常工作——这也已经过验证。让我们调用依赖属性 SelectedCustomObject。

我将此依赖属性绑定到我的视图:

 <TextBlock  Text="{Binding SelectedCustomObject.Name, Mode=TwoWay}" FontSize="10" VerticalAlignment="Center" HorizontalAlignment="Center"/>

DataContext 是在我的用户控件中设置的,这绝对有效,因为我已经对同一视图模型中的其他依赖项属性进行了多次绑定,并且它们运行良好。

因此,通过消除过程,我只能假设我的 XAML 语法是关闭的,并且您不能像这样绑定到我的填充和工作依赖属性。

任何人都可以为我解释一下吗?

4

3 回答 3

1

The answer to my question turned out to be that Silverlight was maintaining a separate cache and thus my new dependency property was, for whatever reason, not loading.

I deleted and regenerated my .XAP file, nothing.

I cleared my IE cache, nothing.

I opened Microsoft Silverlight from my start menu, went to the Application Storage tab and deleted all - then when I refreshed, all of my work appeared.

Happy days.

Hope this helps someone else :).

于 2012-07-12T10:18:13.047 回答
0

您的值很可能Name是在您的视图绑定到属性后设置的。正如@Erno 指出的那样,您的视图不会收到更改通知。实施INotifyPropertyChanged将允许您CustomObject通知您的视图该属性已更改。

下面是实现的样子:

public class CustomObject : INotifyPropertyChanged
{
    [Key]
    public int Id { get; set; }

    private string _name;
    public string Name
    {
        get { return _name; }
        set
        {
            _name = value;
            NotifyPropertyChanged("Name");
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    protected void NotifyPropertyChanged(string info)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(info));
        }
    }
}
于 2012-07-11T17:02:59.017 回答
0

CustomClass 需要实现 INotifyPropertyChanged 以便 UI 将收到更改通知

于 2012-07-11T16:59:40.513 回答