如何在通用列表 wpf C# 中获取带有 userid 的用户名?
How can I get username with userid in generic list wpf C#?
我正在编写 WPF 客户端应用程序。我休息api,WPF客户端正在与此通信。我在wpf中做了一个组合框,数据绑定没问题
XAML 标记:
<ComboBox Name="usernameBox" HorizontalAlignment="Left"
Margin="127,33,0,0" VerticalAlignment="Top" Width="152" Height="24"
ItemsSource="{Binding UserList}" DisplayMemberPath="Username"/>
这工作正常。但是我有一个通用列表 Userlist
,我将其绑定到组合框。我希望用户名是组合框,我可以获得一个带有 userid 的变量。
Model\Users class:
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; }
}
}
ViewModel/UserViewModel class:
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);
}
}
}
获取api/usersjson:
[
{
"UserID": 1,
"Username": "admin",
"Password": "password",
"Fullname": "teszt",
"Authority": 1
}
]
抱歉我的英语不好。请帮我!谢谢。
我设法解决了。
XAML 标记:
<ComboBox x:Name="usernameBox" HorizontalAlignment="Left" Margin="127,33,0,0" VerticalAlignment="Top" Width="152" ItemsSource="{Binding UserList}" SelectedValuePath="UserId" DisplayMemberPath="Username"/>
代码隐藏:
var id = usernameBox.SelectedValue;
一切正常!
像你一样使用 MVVM 你可以添加到你的 XAML:
SelectedItem="{Binding SelectedUser}"
在您的 ViewModel 中:
private Users _user;
public Users SelectedUser
{
get
{
return _user;
}
set
{
if (_user == value)
return;
_user = value;
OnPropertyChanged(nameof(SelectedUser));
}
}
完成,使用 属性 SelectedUser
在您的 ComboBox
中获取您选择的“Users
”
我正在编写 WPF 客户端应用程序。我休息api,WPF客户端正在与此通信。我在wpf中做了一个组合框,数据绑定没问题
XAML 标记:
<ComboBox Name="usernameBox" HorizontalAlignment="Left"
Margin="127,33,0,0" VerticalAlignment="Top" Width="152" Height="24"
ItemsSource="{Binding UserList}" DisplayMemberPath="Username"/>
这工作正常。但是我有一个通用列表 Userlist
,我将其绑定到组合框。我希望用户名是组合框,我可以获得一个带有 userid 的变量。
Model\Users class:
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; }
}
}
ViewModel/UserViewModel class:
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);
}
}
}
获取api/usersjson:
[
{
"UserID": 1,
"Username": "admin",
"Password": "password",
"Fullname": "teszt",
"Authority": 1
}
]
抱歉我的英语不好。请帮我!谢谢。
我设法解决了。
XAML 标记:
<ComboBox x:Name="usernameBox" HorizontalAlignment="Left" Margin="127,33,0,0" VerticalAlignment="Top" Width="152" ItemsSource="{Binding UserList}" SelectedValuePath="UserId" DisplayMemberPath="Username"/>
代码隐藏:
var id = usernameBox.SelectedValue;
一切正常!
像你一样使用 MVVM 你可以添加到你的 XAML:
SelectedItem="{Binding SelectedUser}"
在您的 ViewModel 中:
private Users _user;
public Users SelectedUser
{
get
{
return _user;
}
set
{
if (_user == value)
return;
_user = value;
OnPropertyChanged(nameof(SelectedUser));
}
}
完成,使用 属性 SelectedUser
在您的 ComboBox
Users
”