2009-09-01 11 views
1

私はSilverlight 3.0にバインディングがあることを理解していますが、これを使ってクラスからプロパティを読み取る方法の簡単な例がほしいだけです。
私は場所と呼ばれる文字列プロパティとして選任というクラスがあります。もちろん、文字列として_Locationプライベート宣言でSilverlightで簡単なバインディングを行う方法は?

Public Property Location() As String 
     Get 
      Return _Location 
     End Get 
     Set(ByVal Value As String) 
      _Location = Value 
     End Set 
    End Property 

を。私は何をする必要がありますどのような

<TextBlock Text="{Binding Appointment.Location}"/> 

:たとえば、私はこのような何かをしたい、
私はXAML要素がTextElementの中でこれを表示するには、このプロパティにバインドしたいが、それはXAMLではなくコードでなければなりませんこれを機能させるには?
DynamicResourceのようなWPFの機能が存在しないため、Silverlight 3.0のソリューションが必要です。これは私が使い慣れたものです。


ちょうど私のXAMLは異なるXAMLは同じ予定をファイルがあるので、これは、結合例が動作するようには思えない理由の要因であってもよいし、別々のXAMLファイルからロードされていることを追加します。位置データを適用する必要があります。

+0

ここでの答えがうまくいくように見えますが、今までこれまでの方法がわからなかったので、これを機能させるのはDataContextの部分だけでした! – RoguePlanetoid

+0

いくつかのクラスにバインドするには複数のDataContextが必要ですが、これを理解できるはずです - XAMLにバインドする1つのクラスにそれらを使用します – RoguePlanetoid

答えて

3

2つのオプションがあります。

「予定」クラスは、コントロールまたはウィンドウのためのDataContextとして使用することができます場合は、あなたが行うことができます:

<TextBlock Text="{Binding Location}" /> 

しかし、「予定」は、あなたの現在のDataContextの財産である、場合、あなたが必要とします結合のためのより複雑なパス:

<TextBlock Text="{Binding Path=Appointment.Location}" /> 

完全な詳細はBinding Declarations page下MSDNに記載されています。これらのどちらも機能していない場合は、DataContextが正しく設定されていることを確認してください。

+0

これはおかげで少なくとも私はDynamicResourcesに慣れていましたが、これはもっと強力であり、XAMLのほんのちょっとしたものです – RoguePlanetoid

0

私が正しく読んでいる場合は、予定のインスタンスを作成する必要があり、そのインスタンスにコントロールのDataContextのを設定し、あなただけへの結合を変更するには言う:テキスト=「{バインディングの場所}」も

をAppointmentクラスにINotifyPropertyChangedを実装して、データクラスがプロパティ値の変更をUIに通知できるようにすることを検討してください。

+0

これは私が必要と思うように聞こえる - XAMLのDataContextをクラスのインスタンス? – RoguePlanetoid

1

リソース内にAppointmentのインスタンスを宣言してバインドする必要がある場合を除き、コードには何か必要です。

あなたはその後、予定のインスタンスに含むXAMLのDataContextのを割り当てるプロパティパス「場所」にTextプロパティをバインドする必要があります -

<Grid x:Name="LayoutRoot" Background="White"> 
    <TextBlock Text="{Binding Location}" /> 
</Grid> 

その後、コントロールのLoadイベントで: -

void Page_Loaded(object sender, RoutedEventArgs e) 
{ 
    this.DataContext = new Appointment() { Location = "SomePlace" }; 
} 

この場合、私はデフォルトのPageコントロールを使用しています。

+0

実際には、これは私がクラスがインスタンス化される前にDataContextを割り当てているので、私のXAMLが読み込まれた後に、DataContextとしてAppointmentクラスを割り当てた場合、それは機能します! – RoguePlanetoid

関連する問題