2016-09-13 7 views
0

オブジェクトプロパティをラベルにバインドしたいと思います。しかし、私はバインディングを正しく動作させることができません。私が拘束しているオブジェクトは天気APIのものです。ラベルにネストされたプロパティをバインドする方法

コード:

public seald class CurrentWeatherRepsonse: WeatherItem 
{ 
    Temperature { Value {get; set;} } 
} 

public CurrentWeatherResponse WeatherDataUi 
     { 
      get { return _weatherData; } 
      set 
      { 
       _weatherData = value; 
       OnPropertyChanged(); 
      } 
     } 

    //OnPropertyChanged Event 
    public event PropertyChangedEventHandler PropertyChanged; 

    [NotifyPropertyChangedInvocator] 
    protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) 
    { 
     PropertyChangedEventHandler handler = PropertyChanged; 
     if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName)); 
    } 

XAML:

<Label Grid.Row="2" DataContext="{ Binding WeatherDataUi}" Content="{Binding Temperature.Value, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" FontSize="50"></Label> 

私はメタデータオブジェクトを形成する結合していますのでご注意ください。

+0

Visual Studioの出力ウィンドウをチェックします。バインディングエラーがある場合は、それらが表示されます。 'Temperature {Value {get; set}} 'は有効なC#構文ではありません。どういう意味ですか? – ASh

+0

これは、私のDataContextオブジェクトの構造を示すためのものです。 –

+0

投稿したコードを少なくともコンパイルできるものに編集できますか?特に温度の種類とそのアクセス可能性を教えてください – LordWilmore

答えて

1

データの内容を確認します。与えられた問題について既に説明したように、データコンテキストはweatherObserverオブジェクトでなければなりません。 異なるオブジェクトを持つ1つのビューをデータコンテキストとして共有することは、同じレベルのプロパティ名が同じ場合にのみ機能します。これはお勧めしません。

また、データコンテキストに複数のオブジェクトを同時に配置することはできません。 が、これは別のオブジェクトからプロパティを結合するための他のソースにアクセスするためにあなたのXAML

xmlns:proxy="Your namespace ;assembly=your assembly" 

<proxy:BindingProxy x:Key="Proxy" Data="{Binding}" /> 

使用中のプロキシオブジェクトを作成します。

もののアプローチは次のようにやや行うことができるのと同じビューの複数のオブジェクトを参照します

{Binding Data.DifferentProperty, Source={StaticResource Proxy} 

ラベルデータのコンテキストが異なる場合でも、このバインディングはProcyオブジェクトのインスタンスを参照し、そこからバインディングの詳細を取得します。

これはあなたの質問にお答えします。

関連する問題