По умолчанию поле со списком вызывает ToString () для выбранного элемента, чтобы получить отображаемое значение - поскольку вы привязываетесь к DataRowView, результатом является тип (поведение по умолчанию ToString ())
То, что вы на самом деле хотите показать, это свойство username выбранного элемента, и для этого вы можете установить DisplayMemberPath в выпадающем списке "username"
(Кроме того, если вы сделаете это, вы, вероятно, обнаружите, что можете избавиться и от пользовательской таблицы данных, поскольку имя пользователя также будет использоваться для заполнения каждого элемента.)
В ответ на ваш комментарий:
Я не хочу быть одним из тех программистов, но "это работает на моей машине".
Мой XMAL:
<ComboBox Name="cmbEmail"
Height="23"
VerticalAlignment="Top"
TabIndex="1"
ToolTip="enter the email you signed up with here"
IsEditable="True"
IsSynchronizedWithCurrentItem="True"
ItemsSource="{Binding}"
DisplayMemberPath="username">
</ComboBox>
и мой код:
public partial class Window1 : Window
{
public Window1()
{
Users = new DataTable("users");
Users.Columns.Add("username");
Users.Rows.Add(CreateDataRow("Fred"));
Users.Rows.Add(CreateDataRow("Bob"));
Users.Rows.Add(CreateDataRow("Jim"));
InitializeComponent();
cmbEmail.DataContext = Users;
}
public DataTable Users { get; private set; }
private DataRow CreateDataRow(string userName)
{
DataRow dr = Users.NewRow();
dr["username"] = userName;
return dr;
}
}