Это (по моему одинокому мнению) одно из самых больших ограничений модели привязки данных в Silverlight и WPF, а именно, что нигде в процессе нет безопасности типов. Как только вы набираете {Binding ...}, вы работаете без сети. MS удалось взять чудесный язык со строгой типизацией, такой как C #, и связать его с совершенно не типичной моделью привязки данных, тем самым почти уничтожив десятилетие замечательной работы Андерса Хейлсберга над C #. Вы ожидаете такого рода «слабости» при работе с динамическими языками, но не когда имеете дело с C #.
Это ограничение действительно становится проблематичным, когда вы меняете ViewModel, лежащую в основе ваших Views, потому что, конечно, нет простого способа проверить ваши привязки данных. Обычно, когда у вас есть код, который вы не можете протестировать, вы можете, по крайней мере, положиться на компилятор, который скажет вам, не имеет ли смысл то, что вы просите сделать код. Но поскольку MS сделала привязки данных небезопасными, вы не только не можете проверить свои изменения, вы даже не можете полагаться на то, что компилятор сообщит вам, когда они не имеют никакого смысла. И, чтобы добавить оскорбление к травме, вы даже не можете рассчитывать на то, что ваше приложение будет запущено и вы увидите какие-либо сообщения об ошибках: потому что привязки всегда терпят неудачу молча. Лучшее, что вы можете сделать, это повысить уровень ведения журнала и просмотреть множество сообщений об ошибках отладки. Uggh. Гадкий как черт.
См. Мое сообщение в блоге здесь , другой вопрос, который я задал здесь , и мой ответ здесь , чтобы узнать больше о лежащей в основе проблеме.
Я должен отметить, что я, кажется, практически один в своем мнении об этом, так что, возможно, есть что-то огромное, что я просто скучаю. Но я лично думаю, что ты ударил гвоздь прямо в голову.