0

我是 wp7 开发的新手。我正在尝试使用隔离存储的本地数据库将文本块绑定本地数据库字段。

我使用以下代码....

<TextBlock x:Name="field_name" TextWrapping="Wrap" Text="{Binding fieldName}">
</TextBlock>

这里的字段名称是一个数据库列,使用 LINQ to SQL 将数据检索到一个可观察的集合中。

datacontext 方法适用于列表框,但不适用于 TextBlock 单独...

有任何想法吗..?谢谢..!

4

2 回答 2

1

您必须将文本块的 DataContext 属性设置为它应该绑定到的对象。

field_name.DataContext = MyObjectFromDatabase
于 2012-04-03T19:46:44.687 回答
0

不要直接绑定。

你想要做的是:

看法:

<TextBlock x:Name="field_name" TextWrapping="Wrap" Text="{Binding fieldName}">
</TextBlock>

视图模型:

public class ViewModel:INotifyPropertyChanged
{

public ViewModel()
{
//Load DB and set the fieldName property here
}
public string FieldName
{
get{return _fieldName;}
set{_fieldName=value;
   OnPropertyChanged("FieldName");
}

protected void OnPropertyChanged(string propertyName)
{
    if(PropertyChanged!=null)
        PropertyChanged(this,new PropertyChangedEventArgs(propertyName));
}
public event public event PropertyChangedEventHandler PropertyChanged;

}

这就是所谓的 MVVM (ModelViewViewModel)。ViewModel 绑定到视图的 DataContext,然后您可以将 ViewModel 的属性绑定到视图中的元素。有很多框架可以使这更容易:

  1. MVVMLite - 在 codeplex.com 上
  2. Caliburn.Micro - 在 codeplex.com 上

这一切都可以帮助您将 ViewModel 绑定到 View 并提供一堆帮助程序,因此您编写的代码更少。如果您要进行任何基于 Xaml 的编码,您确实需要对 MVVM 进行编码,因为这是对此类技术进行编码的事实上的“标准”方式。

于 2012-04-03T20:06:16.707 回答