Привязка с форматом экранированной строки нарушает VS IDE и intellisense - PullRequest
2 голосов
/ 03 марта 2011

В Silverlight у меня есть гиперссылка, определенная следующим образом:

<HyperlinkButton Content="{Binding FileName}" NavigateUri="{Binding MailLogAttachmentID, StringFormat=\/DownloadFile.aspx?objecttype\=proposalattachment&amp;id\=\{0\}}" />

Когда я пытаюсь просмотреть конструктор, вместо XAML я получаю ошибку Произошло необработанное исключение (индекс (на основе нуля) должен быть больше или равен нулю и меньше размера списка аргументов), и это дает мне возможность перезагрузить конструктор.Это также нарушает любой смысл при разработке в XAML.Если я уберу выражение NavigateUri StringFormat, все будет хорошо.Приложение компилируется нормально, и кнопка гиперссылки работает, как и ожидалось.

Есть ли другой способ получить эту функциональность, не нарушая конструктор?

1 Ответ

6 голосов
/ 03 марта 2011

Это должно сработать, если вам не нужно сложное экранированное выражение:

<HyperlinkButton DataContext="{StaticResource s}" Content="{Binding FileName}">
    <HyperlinkButton.NavigateUri>
        <Binding Path="MailLogAttachmentID"
                 StringFormat="/DownloadFile.aspx?objecttype=proposalattachment&amp;id={0}" />
    </HyperlinkButton.NavigateUri>
</HyperlinkButton>

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

<HyperlinkButton Content="{Binding FileName}"
                 NavigateUri="{Binding MailLogAttachmentID, StringFormat=/DownloadFile.aspx?objecttype\=proposalattachment&amp;amp;id\={0}}" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...