Я хочу привязать текст текстового блока к свойству статического класса. Всякий раз, когда значение свойства статического класса изменяется, оно должно отражать текстовый блок, который находится в другом окне или настраиваемом элементе управления.
Связывание со статическим классом
Ответ 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;
}
}