0

私はwp7開発が初めてです。分離ストレージのローカル データベースを使用して、 Textblockをローカル データベース フィールドにバインドしようとしています。

私は次のコードを使用します....

<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 に答える