Скажем, у меня есть такой класс:
public class MyClass
{
public string Name;
public int Id;
public override string ToString()
{
return this.Id.ToString() + " - " + this.Name;
}
}
Если я связываю текстовый столбец сетки данных с экземпляром объекта этого класса (без использования конвертера), вызывается переопределенная ToString, и отображается Id- Назовите успешно.Однако, когда я связываю один и тот же объект со свойством TextBlock, свойство ToString никогда не вызывается, а Text становится пустым.Я знаю, что могу использовать конвертер, но я пытаюсь понять, почему привязка не вызывает ToString, как это происходит при привязке к столбцу таблицы данных.
Привязка столбца Datagrid (источником элемента datagrid является коллекция объектов MyClass):
<DataGridTextColumn Binding="{Binding .}" Header="Id - Name"/>
Привязка TextBlock:
<TextBlock><Run Text="{Binding myClass, ElementName=UserControl}"/></TextBlock>
Примечание..Name, тогда он успешно отображает свойство Name.