如何在标签中绑定嵌套属性

本文关键字:绑定 嵌套 属性 标签 | 更新日期: 2023-09-27 18:06:59

我想将一个对象属性绑定到一个标签。然而,我无法使绑定正常工作。我要绑定的对象来自一个天气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>

请注意,我正在绑定一个元数据对象。

如何在标签中绑定嵌套属性

检查数据上下文。正如已经讨论的给定问题,您的数据上下文应该是weatherObserver对象,因为您的属性是在该对象下声明的。只有在相同的级别上具有相同的属性名时,才能将一个视图与不同的对象共享为数据上下文。虽然不建议这样做。

同时在数据上下文中不能有多个对象

虽然在同一视图中引用多个对象的方法可以这样做:在xaml

中创建代理对象
xmlns:proxy="Your namespace ;assembly=your assembly"
<proxy:BindingProxy x:Key="Proxy" Data="{Binding}" />

使用它来访问其他源来绑定来自不同对象的属性

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

现在,即使标签数据上下文不同,这个绑定也会引用Procy对象实例,并从中获取绑定细节。