Подтвердить что ты не робот

Связывание со статическим классом

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

4b9b3361

Ответ 1

Вы можете привязать свойство ANY к статическому классу с помощью расширения x: Static, но если вы не реализуете отслеживание изменений, это может вызвать ошибки при обновлении!

<TextBlock Text="{Binding Source={x:Static sys:Environment.MachineName}}" />

Ответ 2

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

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

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

Ответ 3

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

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

Пример:

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

        }
    }