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

时间:2011-03-03 19:42:43

标签: silverlight xaml binding

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

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

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

我是否有另一种方法可以在不破坏设计师的情况下获得此功能?

1 个答案:

答案 0 :(得分:6)

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

<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}}" />