Привязка к статическому свойству класса - PullRequest
49 голосов
/ 05 октября 2010

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

Ответы [ 3 ]

68 голосов
/ 05 октября 2010

Вы можете связать ЛЮБОЕ свойство статического класса, используя расширение разметки x: Static , но если вы не реализуете отслеживание изменений, это может вызвать ошибки при обновлении!

<TextBlock Text="{Binding Source={x:Static sys:Environment.MachineName}}" />
18 голосов
/ 06 марта 2014

Это сработало для меня:

Text="{Binding Source={x:Static MyNamespace:MyStaticClass.MyProperty}, Mode=OneWay}"

Без Mode=OneWay Я получил исключение.

17 голосов
/ 28 мая 2015

Для тех, кто использует вложенные статические классы для организации / разделения констант. Если вам необходимо выполнить привязку к вложенным статическим классам, кажется, вам нужно использовать оператор плюс (+) вместо оператора точки (.) Для доступа к вложенному классу:

{Binding Source={x:Static namespace:StaticClass+NestedStaticClasses.StaticVar}}

Пример:

public static class StaticClass
    {
        public static class NestedStaticClasses
        {
            public static readonly int StaticVar= 0;

        }
    }
...