我想将对象属性绑定到标签。但是我无法使绑定正常工作。我绑定的对象来自天气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 :(得分:1)
检查您的数据上下文是什么。正如已经针对给定问题所讨论的那样,您的数据上下文应该是weatherObserver
对象,因为您的属性在此下声明。
只有在相同级别具有相同的属性名称时,才能将具有不同对象的一个视图共享为数据上下文。虽然不推荐这样做。
此外,您无法同时在数据上下文中拥有多个对象。
虽然在同一个视图中引用多个对象的方法可以这样做: 在xaml中创建代理对象
xmlns:proxy="Your namespace ;assembly=your assembly"
<proxy:BindingProxy x:Key="Proxy" Data="{Binding}" />
使用此方法访问其他来源以绑定来自不同对象的属性
{Binding Data.DifferentProperty, Source={StaticResource Proxy}
现在即使标签数据上下文不同,此绑定也会引用Procy对象实例并从那里获取绑定详细信息。
希望这能回答你的问题!