2016-09-13 4 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. если есть какие-либо ошибки привязки, вы увидите их. 'Температура {Значение {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} 

Теперь даже если контекст Labels данных отличается эта привязка будет ссылаться на экземпляр объекта Procy и получить Binding детали оттуда.

Надеюсь, это отвечает на ваш вопрос!

Смежные вопросы