Порядок привязки WPF - как изменить? - PullRequest
1 голос
/ 28 декабря 2010

У меня есть кнопка-переключатель, к которой я привязываю свойство 'Tag' к объекту.Затем я связываю свойство IsChecked со свойством Tag.Моя проблема в том, что IsChecked вызывается первым при загрузке окна, а второй - тегом.Как я могу сделать привязку свойства 'Tag' первым?

<ToggleButton>

    <ToggleButton.Tag>
        <Bind An Object...>
    </ToggleButton.Tag>

    <ToggleButton.IsChecked>
        <Binding Converter="{StaticResource SomeConverter}" Path="Tag" RelativeSource="{RelativeSource Self}"/>
    </ToggleButton.IsChecked>

</ToggleButton>

Ответы [ 2 ]

4 голосов
/ 28 декабря 2010

Почему заказ имеет значение?Это потому, что ваш конвертер не обрабатывает случай, когда значение равно null, потому что он должен - даже если он возвращает Binding.DoNothing.Когда для Tag установлено значение что-то, ваша привязка IsChecked должна обновиться, и ваш конвертер должен снова запуститься.Разве это не так?

1 голос
/ 28 декабря 2010

Вы можете привязать этот источник (источник, который вы привязываете к Tag) напрямую к Tag и IsChecked, тогда у вас нет IsChecked привязки, зависящей от Tag, и вы не заботитесь о состоянии расы и вам не нужен заказ.

...