Установка привязки DataGridHyperlinkColumn в качестве атрибута URI

Не уверен, как это сделать. Я пытаюсь настроить DataGridHyperlinkColumn в коде программной части, чтобы все ссылки указывали на один и тот же URI, но у каждой было другое значение атрибута.

Вот что у меня есть до сих пор:

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

dgCol.Binding = "PersonEditPage.xaml?PersonID=" + Binding("PersonID");

Конечно, dgCol.Binding ожидает объект Binding, поэтому я не могу просто добавить к нему строку. Не могли бы вы помочь мне правильно создать эту привязку?

Я не смог найти ничего полезного, но, возможно, это потому, что я не знаю, что мне следует искать. Вот некоторые вещи, на которые я смотрел (если я что-то пропустил, пожалуйста, простите меня):


person Ben    schedule 14.06.2014    source источник


Ответы (1)


Вам нужно использовать конвертер, чтобы отформатировать строку URL, содержащую PersonID текущего свойства:

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();
    }
}
person Community    schedule 14.06.2014
comment
Спасибо за этот ответ. Я предполагаю, что свойство Binding.StringFormat не работает, потому что ожидается, что привязка будет преобразована в URI, а не в строку. Это правильно? - person Ben; 18.06.2014
comment
@Ben: Да, свойство StringFormat можно использовать, только если целевое свойство имеет тип данных string. - person ; 18.06.2014