C# 将DataGridHyperlinkColumn绑定设置为URI属性

C# 将DataGridHyperlinkColumn绑定设置为URI属性,c#,wpf,binding,uri,datagridcolumn,C#,Wpf,Binding,Uri,Datagridcolumn,我不知道该怎么办。我试图在代码后面设置一个DataGridHyperlinkColumn,这样所有链接都指向相同的URI,但每个都有不同的属性值 以下是我到目前为止的情况: DataGridHyperlinkColumn dgCol = new DataGridHyperlinkColumn(); dgCol.Header = title; dgCol.ContentBinding = new Binding("PersonName"); dgCol.Binding = "PersonEdit

我不知道该怎么办。我试图在代码后面设置一个
DataGridHyperlinkColumn
,这样所有链接都指向相同的URI,但每个都有不同的属性值

以下是我到目前为止的情况:

DataGridHyperlinkColumn dgCol = new DataGridHyperlinkColumn();
dgCol.Header = title;
dgCol.ContentBinding = new Binding("PersonName");

dgCol.Binding = "PersonEditPage.xaml?PersonID=" + Binding("PersonID");
当然,
dgCol.Binding
需要一个Binding对象,所以我不能只向其中添加一个字符串。你能帮我正确创建这个绑定吗

我没有找到任何有用的东西,但也许这是因为我不知道我应该寻找什么。以下是我一直在看的一些东西(如果我错过了什么,请原谅我):


您需要使用转换器来格式化包含当前属性的
PersonID的URL字符串:

DataGridHyperlinkColumn hypCol = new DataGridHyperlinkColumn();
hypCol.Header = "Link";
hypCol.ContentBinding = new Binding("PersonName");
hypCol.Binding = new Binding("PersonID") {
    Converter = new FormatStringConverter(),
    ConverterParameter = "PersonEditPage.xaml?PersonID={0}"
};
转换器的定义如下:

public class FormatStringConverter : IValueConverter
{
    public object Convert(object value, Type targetType,
        object parameter, System.Globalization.CultureInfo culture)
    {
        if (value == null || parameter == null)
        {
            return null;
        }
        return string.Format(parameter.ToString(), value.ToString());
    }

    public object ConvertBack(object value, Type targetType,
        object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

谢谢你的回答。我猜,
Binding.StringFormat
属性不起作用,因为绑定需要转换为URI而不是字符串。是吗?@Ben:是的,只有当目标属性的数据类型为
string
时,才能使用
StringFormat
属性。