MaterialDesign Or ComboBox 联动查询
阅读原文时间:2023年07月09日阅读:1

后台代码

public class GetTenants
{
public string tenancyName { get; set; }
public string name { get; set; }
public string editionDisplayName { get; set; }
public string connectionString { get; set; }
public string isActive { get; set; }
public string creationTime { get; set; }
public string subscriptionEndDateUtc { get; set; }
public string editionId { get; set; }
public string isInTrialPeriod { get; set; }

    public string id { get; set; }  
}  
public class MainViewModel : ViewModelBase  
{

    private ObservableCollection<GetTenants> \_TenantsModel;

    public ObservableCollection<GetTenants> TenantsModel  
    {  
        get { return \_TenantsModel; }  
        set { \_TenantsModel = value;RaisePropertyChanged(); }  
    }

    private string userName = string.Empty;  
    private string passWord = string.Empty;  
    public static string Token = string.Empty;  
    public string Password  
    {  
        get { return passWord; }  
        set { passWord = value; RaisePropertyChanged(); }  
    }  
    public string UserName  
    {  
        get { return userName; }  
        set { userName = value; RaisePropertyChanged(); }  
    }

    private GetTenants \_Model;

    public GetTenants Model  
    {  
        get { return \_Model; }  
        set { \_Model = value;RaisePropertyChanged();  
             }  
    }

    private string \_CboxText;

    public string CboxText  
    {  
        get { return \_CboxText; }  
        set { \_CboxText = value;RaisePropertyChanged(); QueryTenantsList(value); }  
    }  
    private string \_QueryNmae;

    public string QueryNmae  
    {  
        get { return \_QueryNmae; }  
        set { \_QueryNmae = value; RaisePropertyChanged(); }  
    }

    public  RelayCommand<object> QueryTenantsCommand { get; set; }  
    public RelayCommand Close { get; set; }

    public RelayCommand Logasync { get; private set; }

    public MainViewModel()  
    {  
       QueryTenantsCommand = new RelayCommand<object>((o) => SelectModel(o));  
        TenantsModel = new ObservableCollection<GetTenants>();  
        Close = new RelayCommand(()=> ApplicationShutdown());  
        Logasync = new RelayCommand(()=>LogCommand());  
    }

    private async void LogCommand()  
    {  
        if (string.IsNullOrEmpty(UserName) && string.IsNullOrEmpty(Password)) return;  
        JObject jObjects = new JObject();  
        jObjects\["userNameOrEmailAddress"\] = UserName;  
        jObjects\["password"\] = Password;  
        var LoginTask = QueryOrUpdateHttp.LoginAsync("http://47.106.71.73:5000/api/TokenAuth/Authenticate", jObjects);  
        var timeouttask = Task.Delay(3000);  
        var completedTask = await Task.WhenAny(LoginTask, timeouttask);  
        if (completedTask == timeouttask) return;  
        var jObject = JObject.Parse(LoginTask.Result.ToString());  
        if (string.IsNullOrEmpty(jObject.ToString()) || !string.IsNullOrEmpty(jObject\["error"\].ToString())) return;  
        Token = jObject\["result"\]\["accessToken"\].ToString();  
        if (string.IsNullOrEmpty(Token)) return;  
    }

    public  void ApplicationShutdown()  
    {  
        Messenger.Default.Send("", "ApplicationShutdown");  
    }

    private  void SelectModel(object o)  
    {  
        GetTenants combo = (o as ComboBox).SelectedItem as GetTenants;  
        if (combo == null) return;

        QueryNmae =  combo.name.Trim();

    }

    public  static ObservableCollection<T> DeserializeJsonToList<T>(string json) where T : class  
    {  
        JsonSerializer serializer = new JsonSerializer();  
        using (StringReader sr = new StringReader(json))  
        {  
       object o =  serializer.Deserialize(new JsonTextReader(sr), typeof(ObservableCollection<T>));  
        ObservableCollection<T> list = o as ObservableCollection<T>;  
        return list;  
        } 

    }  
    private async void QueryTenantsList(string value)  
    {  
        if (string.IsNullOrEmpty(value)) return;  
        GetTenants loadValue = new GetTenants() {  id="1", name="正在加载...."};  
        TenantsModel.Add( loadValue);  
        string result = await QueryOrUpdateHttp.GetTenantId("/api/services/app/Tenant/GetTenants?Filter=" + CboxText);  
        var JResult = JObject.Parse(result);

        if (bool.Parse(JResult\["success"\].ToString()))  
        {  
            var results = JResult\["result"\]\["items"\].ToString();  
            TenantsModel.Clear(); 

            TenantsModel = DeserializeJsonToList<GetTenants>(results);

        }  
        else  
        {  
            MessageBox.Show("没有改公司名称");  
        }  
    }

}