使用转义字符串格式绑定会破坏VS IDE和智能感知

Jos*_*osh 2 silverlight xaml binding

在Silverlight中,我有一个超链接按钮定义如下:

<HyperlinkButton Content="{Binding FileName}" NavigateUri="{Binding MailLogAttachmentID, StringFormat=\/DownloadFile.aspx?objecttype\=proposalattachment&amp;id\=\{0\}}" />
Run Code Online (Sandbox Code Playgroud)

当我尝试查看设计器时,而不是XAML,我得到一个未处理的异常发生错误(索引(从零开始)必须大于或等于零且小于参数列表的大小)它给了我重新加载设计师的选项.在XAML中开发时,这也会破坏任何智能感知.如果我删除NavigateUri StringFormat表达式,一切都很好.应用程序编译正常,超链接按钮按预期工作.

有没有其他方法可以在不破坏设计者的情况下获得此功能?

mad*_*dd0 6

如果您不想要复杂的转义表达式,这应该可以解决问题:

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

在任何情况下,生成异常的字符都是符号,所以如果你这样写,它也应该工作:

<HyperlinkButton Content="{Binding FileName}"
                 NavigateUri="{Binding MailLogAttachmentID, StringFormat=/DownloadFile.aspx?objecttype\=proposalattachment&amp;amp;id\={0}}" />
Run Code Online (Sandbox Code Playgroud)