私のSilverlightのusercontrolにリストボックスがあります。何らかの理由でプライベートクラスの一般的なリストをデータバインドしていません。ここでSilverlight/WPFがリストボックスをバインドできません
コードです:
class userClient
{
public int characterID { get; set; }
public string characterName { get; set; }
}
List<userClient> userClientList; // = new List<userClient>();
void _client_UserList(object sender, DataTransferEventArgs e)
{
this.Dispatcher.BeginInvoke(() =>
{
userClientList = new List<userClient>();
foreach (string user in e.DataTransfer.Data)
{
var userDetailsArray = user.Split('+');
userClient uc = new userClient
{
characterID = Convert.ToInt32(userDetailsArray[0]),
characterName = userDetailsArray[1]
};
userClientList.Add(uc);
}
chatUsers.ItemsSource = userClientList;
chatUsers.DisplayMemberPath = "characterName";
});
}
私はジェネリックリストuserClientList
をチェックし、そうそこには問題がない埋められています。
これは、リストボックスのXAML:
<ListBox x:Name="chatUsers" Grid.Row="0" Grid.Column="1" Margin="2 2 2 2" />
次のエラーがポップアップ出力ウィンドウ忘れ: は 'Yambushi.CombatRoom + userClient'(タイプ 'Yambushi.CombatRoom + userClient')から(タイプ '可能System.String') 'characterName' の値を取得できません。 BindingExpression:Path = 'characterName' DataItem = 'Yambushi.CombatRoom + userClient'(HashCode = 56478042);ターゲット要素は 'System.Windows.Controls.TextBlock'(Name = ''); System.MethodAccessException:userClient.get_characterName() – Drahcir
これは、バインディングエンジンがプロパティのゲッターにアクセスできないことを意味します。 userClientListコレクションをpublicにし、userClientクラスをpublicにし、プロパティもpublicにします。 –