2012-05-21 2 views
0

У меня есть следующие классы, например:Как связать свойство внутри класса внутри другого синглтона?

public FatherClass 
{ 
    // This is a singleton, with instance property named Instance 

    public static ChildClass PropertyName { get; set; } 
} 

public ChildClass 
{ 
    public string Name { get; set; } 
} 

Использование WPF в XAML, как можно связать метку с этим переменным именем? Я смог сделать это с двумя уровнями (например, с отцом), но я получаю ошибки каждый раз, когда я пытаюсь сделать это с 3 уровнями, как показывает пример.

То, что я сделал, было:

Label="{Binding Source=namespace:FatherClass.Instance.PropertyName, Path=Name}" 

Но это не работает.

Спасибо!

ответ

0

Просто связываться непосредственно с статическим свойством:

{x:Static namespace:FatherClass.PropertyName.Name} 
+0

Невозможно. Нет экземпляра ChildClass, только внутри FatherClass. Поэтому невозможно напрямую получить к нему доступ, как вы сказали. ChildClass не является статичным. – jpnavarini

+0

@jpnavarini: Неправильно. Поскольку «Имя» является статическим, экземпляра не задействовано. – SLaks

+0

Прошу прощения, это не статично, только FatherClass статичен. Я отредактирую оригинальный пост. – jpnavarini

0

Не до точки класса в одноточечном (как и в вопросе), но свойство типа ребенка в одноточечном я использую. Пространство имен: Common.DeviceModel Singleton класс: ConnectionStatusManager // FatherClass Вопроса ChildClass: ConnectionStatus // ChildClass Вопроса свойство в том, что синглтон: в VM Статус :

namespace Common.DeviceModel 
{ 
public class ConnectionStatusManager : INotifyPropertyChanged 
    { 
     public static ConnectionStatusManager Instance...; 
     public static ConnectionStatus Status...; 
    } 
} 

XAML:

xmlns:DeviceModel="clr-namespace:Common.DeviceModel;assembly=Common" 

Использует:

<DataTrigger Binding="{Binding Source={x:Static Member=DeviceModel:ConnectionStatusManager.Instance}, Path=Status}" 
              Value="{x:Static Member=DeviceModel:ConnectionStatus.DisConnected}"> 
               <Setter Property="IsEnabled" Value="False" /> 
              </DataTrigger> 
Смежные вопросы