2009-05-09 15 views
2

私の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" /> 

答えて

5

あなたは、Visual Studioの出力ウィンドウに記録されたバインディングエラーメッセージを持っていますか?

編集:

はちょうどあなたのコレクションは、

public ObservableCollection<userClient> userClientList { get; set; } 
+0

次のエラーがポップアップ出力ウィンドウ忘れ: は '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

+0

これは、バインディングエンジンがプロパティのゲッターにアクセスできないことを意味します。 userClientListコレクションをpublicにし、userClientクラスをpublicにし、プロパティもpublicにします。 –

0

ありがとう公共の財産である必要がありながら、フィールドであることに気づきました!モコシありがとう!エラー - System.Windows.Dataエラー:39:BindingExpressionパスエラー - は、強調した答えを見つけずに2つのWPFブックを狂ってしまいました。 クラスメンバーにプロパティを作成しませんでした。

関連する問題