Должен ли я написать код для OnPropertyChanged и BooleanToVisibilityConverter? - PullRequest
0 голосов
/ 24 апреля 2018

Я не понимаю.Я следовал некоторым учебникам и читал некоторые статьи в Интернете, и иногда OnPropertyChanged используется даже без написания кода для него.

            PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null)
        {
            handler(this, new PropertyChangedEventArgs(name));
        }

, а что касается BooleanToVisibilityConverter, я нахожу пользователей, создающих его так:

 public class BoolToVisibilityConverter : IValueConverter
    {
        public object Convert(object value, Type targetType,
            object parameter, CultureInfo culture)
        {
            return (bool)value ? Visibility.Visible : Visibility.Hidden;
        }

        public object ConvertBack(object value, Type targetType,
            object parameter, CultureInfo culture)
        {
            return (Visibility)value == Visibility.Visible;
        }
    }

но когда я пишу Converter={StaticResource ....} BooleanToVisibilityConverter появляется даже без кода выше.Поэтому мой вопрос: эти функции находятся где-то в библиотеке, или вы должны написать их самостоятельно.

1 Ответ

0 голосов
/ 24 апреля 2018

В приведенном вами примере используется Hidden, если false. Встроенный конвертер - Collapsed, если false.

Это мое мнение, но я думаю, что многие создают свои собственные, потому что это дает им возможность добавить дополнительные функциональные возможности. Сам я всегда создавал свои собственные и использовал parameter, чтобы я мог контролировать, что будет, если false.


Я не совсем понимаю ваш вопрос об изменении собственности.

Если PropertyChanged равно нулю, тогда ваш handler будет иметь значение null и не будет выполняться. Вам не нужно писать любой другой код. За кулисами зацикливается WPF. Вам не нужно ничего делать, кроме как позвонить, чтобы сообщить, что вы обновили свойство. WPF знал, как подключиться к нему, потому что он видел INotifyPropertyChanged на вашем объекте.

Надеюсь, это имеет смысл.

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