2017-04-06 1 views
0

Ich programmiere eine WPF-Client-Anwendung. Ich habe eine Pause-API, der WPF-Client kommuniziert damit. Ich habe eine Combobox in WPF erstellt, die Datenbindung ist in Ordnung.Wie kann ich Benutzername mit Benutzer-ID in generische Liste wpf C# bekommen?

XAML-Markup:

<ComboBox Name="usernameBox" HorizontalAlignment="Left" 
      Margin="127,33,0,0" VerticalAlignment="Top" Width="152" Height="24" 
      ItemsSource="{Binding UserList}" DisplayMemberPath="Username"/> 

Dies funktioniert gut. Aber ich habe eine generische Liste Userlist, ich bin dies für die Combobox verbindlich. Ich möchte, dass für den Benutzernamen der Combobox ich eine Variable mit Benutzer-ID erhalten kann.

Modell \ Users Klasse:

namespace Desktop.Model 
{ 
    public class Users 
    { 
     public int UserId { get; set; } 
     public string Username { get; set; } 
     public string Password { get; set; } 
     public string Fullname { get; set; } 
     public int Authority { get; set; } 
    } 
} 

Ansichtsmodell/UserViewModel Klasse:

using GalaSoft.MvvmLight; 
using Desktop.Model; 
using System; 
using System.Collections.Generic; 
using System.Net; 
using System.Net.Http; 
using System.Net.Http.Headers; 
using System.Net.Http.Formatting; 
using Newtonsoft.Json; 

namespace Desktop.ViewModel 
{ 
    public class UserViewModel : ViewModelBase 
    { 
     public List<Users> UserList { get; set; } 

     public UserViewModel() 
     { 
      UserList = new List<Users>(); 
      string url = "http://localhost:1234/api/users"; 
      var json = new WebClient().DownloadString(url); 
      UserList = JsonConvert.DeserializeObject<List<Users>>(json); 
     } 
    } 
} 

Get api/Benutzer json:

[ 
    { 
    "UserID": 1, 
    "Username": "admin", 
    "Password": "password", 
    "Fullname": "teszt", 
    "Authority": 1 
    } 
] 

Sorry für mein schlechtes Englisch. Bitte hilf mir! Vielen Dank.

+0

Verwenden Sie SelectedItem Bindung und in ausgewählten Element haben Sie das gesamte Benutzerobjekt. Willst du das machen? – Mohit

Antwort

0

Ich habe es geschafft zu lösen.

XAML-Markup:

<ComboBox x:Name="usernameBox" HorizontalAlignment="Left" Margin="127,33,0,0" VerticalAlignment="Top" Width="152" ItemsSource="{Binding UserList}" SelectedValuePath="UserId" DisplayMemberPath="Username"/> 

Codebehind:

var id = usernameBox.SelectedValue; 

Es funktioniert gut!

0

Mit MVVM wie Sie sind Sie zu Ihrem XAML hinzufügen:

SelectedItem="{Binding SelectedUser}" 

in Ihrem Ansichtsmodell:

private Users _user; 
public Users SelectedUser 
{ 
    get 
    { 
     return _user; 
    } 
    set 
    { 
     if (_user == value) 
      return; 
     _user = value; 
     OnPropertyChanged(nameof(SelectedUser)); 
    } 
} 

Erledigt, verwenden Sie die Eigenschaft SelectedUser Ihre ausgewählten "Users" in der ComboBox zu erhalten

Verwandte Themen