Статическое связывание с синглтоном таинственно проваливается - PullRequest
2 голосов
/ 27 октября 2010

У меня есть следующий одноэлементный класс, который содержит следующее свойство:

public class Manager : INotifyPropertyChanged
{
    public bool IsOnline
    ...

    public static Manager Instance
    ...
}

В разметке я пытаюсь изменить цвет кнопки на основе этого онлайн-свойства:

<Button.Style>
 <Style TargetType="{x:Type Button}">
  <Style.Triggers>
   <DataTrigger Value="True">
    <DataTrigger.Binding>
     <Binding Source="{x:Static storage:Manager.Instance}" Path="IsOnline"/>
    </DataTrigger.Binding>
    <Setter Property="Background" Value="#8000FF00"/>
   </DataTrigger>
  </Style.Triggers>
 </Style>
</Button.Style>

Эта привязка <Binding Source="{x:Static storage:Manager.Instance}" Path="IsOnline"/> завершается ошибкой с исключением:

Невозможно преобразовать значение в атрибуте 'Source' в объект типа 'System.Windows.Markup.StaticExtension'.

Я четыре раза проверил пространство имен «хранилище»;Я знаю, что на это ссылаются и правильно.Свойство Instance является статическим, поэтому я не понимаю, почему эта привязка не будет выполнена.У меня есть похожие привязки к статическим свойствам повсюду, которые прекрасно работают.

Есть идеи?

Ответы [ 3 ]

1 голос
/ 27 октября 2010

Я создал пример приложения, которое делает именно то, что вы описываете, работает без проблемВы можете скачать его здесь .

0 голосов
/ 01 марта 2012

У меня точно такая же странная проблема!Решение:

Вы ДОЛЖНЫ создать экземпляр класса перед выполнением любых операций XAML с этим классом!

0 голосов
/ 27 октября 2010

Вы пытались использовать ValueConverter для проверки значения, которое получает StaticExtension? (См. Способ 2 на этой странице )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...