【问题标题】:datagrid hyperlink数据网格超链接
【发布时间】:2010-11-06 03:37:41
【问题描述】:

在数据网格中,我想在单元格的内容中放置一个超链接

<sdk:DataGridTextColumn Binding="{Binding Code}" Header="Code" Width="40"  HeaderStyle="{StaticResource myStyle}" />

仅当 [包含我已经绑定的代码的同一对象的] MyUrl 属性的内容既不为空也不为空时

我该怎么做?

【问题讨论】:

    标签: silverlight datagrid hyperlink


    【解决方案1】:

    假设您希望此列是只读的,您可以使用 DataGridTemplateColumn,放入 HyperLinkBut​​ton 并使用这样的转换器将 IsHitTestVisible 绑定到 MyUrl

    <sdk:DataGridTemplateColumn Header="Code" Width="40">
        <sdk:DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
                <HyperlinkButton IsHitTestVisible="{Binding Path=MyUrl,
                                 Converter={StaticResource InvertNullOrEmptyConverter}}"
                                 Content="{Binding Code}" NavigateUri="{Binding MyUrl}"/>
            </DataTemplate>
        </sdk:DataGridTemplateColumn.CellTemplate>
    </sdk:DataGridTemplateColumn>
    

    在转换器中

    public class InvertNullOrEmptyConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            string valueToCheck = value as string;
            if (valueToCheck == null || valueToCheck == string.Empty)
            {
                return false;
            }
            return true;
        }
        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
    

    【讨论】: