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> 

I 양식에게 메타 데이터 객체를 결합하고 있습니다.

+0

Visual Studio의 출력 창을 확인하십시오. 바인딩 오류가있는 경우이를 볼 수 있습니다. 'Temperature {Value {get; set}}'은 (는) 올바른 C# 구문이 아닙니다. 무엇을 의미합니까? – ASh

+0

그것은 내 DataContext 개체의 구조를 표시하기위한 것입니다. –

+0

게시 한 코드를 편집하여 적어도 컴파일 할 수 있습니까? 특히 우리에게 온도 유형 및 액세스 가능성을 알려주십시오. – LordWilmore

답변

1

데이터 컨텍스트가 무엇인지 확인하십시오. 주어진 문제에 대해 이미 논의했듯이 데이터 컨텍스트는 weatherObserver 개체 여야합니다. 데이터 컨텍스트와 다른 개체가있는 하나의보기를 공유하는 것은 같은 수준의 속성 이름이 동일한 경우에만 작동합니다. 이 방법은 권장하지 않습니다.

또한 데이터 컨텍스트에서 동시에 여러 개체를 가질 수 없습니다. 이 다른 개체에서 속성을 바인딩 다른 소스에 액세스하기 위해 XAML

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

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

사용에 프록시 객체를 생성 :

비록 방식은 이런 식으로 어느 정도 수행 할 수 있습니다에서 동일한 뷰에 대한 여러 개체를 참조합니다

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

이제 레이블 데이터 컨텍스트가 다르더라도이 바인딩은 Procy 개체 인스턴스를 참조하고 여기에서 바인딩 세부 정보를 가져옵니다.

이 질문에 대한 답변입니다.