Привязка к статическому свойству - PullRequest
161 голосов
/ 01 июня 2009

Мне трудно связать свойство простой статической строки с текстовым полем.

Вот класс со статическим свойством:

public class VersionManager
{
    private static string filterString;

    public static string FilterString
    {
        get { return filterString; }
        set { filterString = value; }
    }
}

В моем xaml я просто хочу привязать это статическое свойство к текстовому полю:

<TextBox>
    <TextBox.Text>
        <Binding Source="{x:Static local:VersionManager.FilterString}"/>
    </TextBox.Text>
</TextBox>

Все компилируется, но во время выполнения я получаю следующее исключение:

Невозможно преобразовать значение в атрибут «Источник» к объекту типа 'System.Windows.Markup.StaticExtension. Ошибка на объекте 'System.Windows.Data.Binding' в файл разметки 'BurnDisk; компонент / selectversionpagefunction.xaml' Строка 57, позиция 29.

Есть идеи, что я делаю не так?

Ответы [ 11 ]

0 голосов
/ 30 апреля 2019

Самый простой ответ (.net 4.5 и выше):

    static public event EventHandler FilterStringChanged;
    static string _filterString;
    static public string FilterString
    {
        get { return _filterString; }
        set
        {
            _filterString= value;
            FilterStringChanged?.Invoke(null, EventArgs.Empty);
        }
    }

и XAML:

    <TextBox Text="{Binding Path=(local:VersionManager.FilterString)}"/>

Не пренебрегайте скобками

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