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

时间:2016-09-13 11:22:14

标签: c# wpf binding label nested-attributes

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

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

1 个答案:

答案 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对象实例并从那里获取绑定详细信息。

希望这能回答你的问题!