WPF MVVM, Связывающий Флажок. IsChecked к именованному объекту в Словаре <строка, bool>

Поскольку результат может быть получен асинхронно, потребитель dispatchCall должен иметь логику для ожидания возвращения асинхронных данных. Одним из вариантов было бы для dispatchCall вернуть Обещание, которое в конечном итоге разрешается в объект { status, result } (или { status, error }), который вы ищете:

if (typeof result.then === "function") {
  return result
    .then((resolveValue) => {
      return { status: 0, result: resolveValue };
    })
    .catch((error) => {
      return { status: 400, error };
    })
}

И в потребителе [117 ], проверьте, является ли возвращаемое значение Обещанием - если это так, вызовите .then для него:

const dispatchResult = dispatchCall();
if (typeof dispatchResult.then === 'function') {
  dispatchResult.then(({ status, result, error }) => {
    // do stuff with status, result, error here
    // if there was an error, result will be undefined
  });
} else {
  // do stuff with dispatchResult.status, .result, .errorMessage
}

Вы также можете рассмотреть возможность возврата Обещания независимо от того, result ли [119] является Обещанием или нет, чтобы облегчить управление кодом - например, в синхронном разделе:

return Promise.resolve({ status: 0, result: result });
5
задан Rich 14 April 2009 в 03:00
поделиться

1 ответ

У вас почти это было - просто отбросьте кавычки вокруг аргумента индексатора:

{Binding FileTypes[aspx]}

Более сложная структура данных будет просто требуется последовательность индексаторов, например

{Binding Foo[aspx][Bar]}

. Кстати, хороший ресурс для этого материала находится в MSDN, в разделе WPF> Данные> Связывание данных> Обзор объявлений привязки - прокрутите вниз до «Синтаксис пути привязки», чтобы получить сводную информацию о обозначения и условные обозначения, которые можно использовать в пути привязки.

3
ответ дан 15 December 2019 в 06:35
поделиться
Другие вопросы по тегам:

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