WPF MVVM - Единственный PropertyChanged может обновить всю привязку Данных DataTemplate?

Я подправил ответ @ markrushakoff, чтобы сделать его вызываемой функцией:

function yesNo {
  # prompts user with $1, returns true if response starts with y or Y or is empty string
  read -e -p "
$1 [Y/n] " YN

  [[ "$YN" == y* || "$YN" == Y* || "$YN" == "" ]]
}

Используйте это так:

$ if yesNo "asfd"; then echo "true"; else echo "false"; fi

asfd [Y/n] y
true

$ if yesNo "asfd"; then echo "true"; else echo "false"; fi

asfd [Y/n] Y
true

$ if yesNo "asfd"; then echo "true"; else echo "false"; fi

asfd [Y/n] yes
true

$ if yesNo "asfd"; then echo "true"; else echo "false"; fi

asfd [Y/n]
true

$ if yesNo "asfd"; then echo "true"; else echo "false"; fi

asfd [Y/n] n
false

$ if yesNo "asfd"; then echo "true"; else echo "false"; fi

asfd [Y/n] ddddd
false

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

function toLowerCase {
  echo "$1" | tr '[:upper:]' '[:lower:]'
}

function yesNo {
  # $1: user prompt
  # $2: default value (assumed to be Y if not specified)
  # Prompts user with $1, using default value of $2, returns true if response starts with y or Y or is empty string

  local DEFAULT=yes
  if [ "$2" ]; then local DEFAULT="$( toLowerCase "$2" )"; fi
  if [[ "$DEFAULT" == y* ]]; then
    local PROMPT="[Y/n]"
  else
    local PROMPT="[y/N]"
  fi
  read -e -p "
$1 $PROMPT " YN

  YN="$( toLowerCase "$YN" )"
  { [ "$YN" == "" ] && [[ "$PROMPT" = *Y* ]]; } || [[ "$YN" = y* ]]
}

Используйте это так:

$ if yesNo "asfd" n; then echo "true"; else echo "false"; fi

asfd [y/N]
false

$ if yesNo "asfd" n; then echo "true"; else echo "false"; fi

asfd [y/N] y
true

$ if yesNo "asfd" y; then echo "true"; else echo "false"; fi

asfd [Y/n] n
false
24
задан Dave Clemmer 5 August 2011 в 19:28
поделиться

2 ответа

Наконец, я получил ответ от моего коллеги Джоша Смита , он очень простой, нам просто нужно чтобы вызвать событие PropertyChanged с null или String.Empty в качестве имени свойства. который сообщит системе привязки WPF переоценить все привязки этого объекта. Используя это, я получаю два основных преимущества.

  1. Накладные расходы на создание отдельных событий для каждого свойства уменьшатся до одного события из модели представления в пользовательский интерфейс. Спектакль будет увеличиваться.
  2. При написании кода мы можем просто использовать синтаксис {get; set;}, который чист и менее Writing

Предположение: Как и в вопросе, который я предположил здесь, это очень особенное состояние, при котором все мои Свойства обновляются одновременно

У меня есть сообщение в блоге, обсуждающее это здесь

Обновление: на основе комментария kek444

50
ответ дан 28 November 2019 в 23:13
поделиться

Я не думаю, что эту проблему стоит пытаться решить. То есть я думаю, что решение здесь состоит в том, чтобы отдельные свойства отправляли уведомления об изменении свойств по мере их установки. Если нет, что вы собираетесь делать, когда изменится отдельное свойство (но не обязательно все пятьдесят)?

0
ответ дан 28 November 2019 в 23:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: