zoukankan      html  css  js  c++  java
  • MaterialDesign Or ComboBox 联动查询

     <ComboBox Width="200" Height="30" x:Name="ComboxName" Text="{Binding CboxText,Mode=TwoWay}" ItemsSource="{Binding TenantsModel}" SelectedItem="{Binding Model}" DisplayMemberPath="name"  IsEditable="True" materialDesign:HintAssist.Hint="{Binding QueryNmae}" >
                    <i:Interaction.Triggers>
                        <i:EventTrigger EventName="SelectionChanged">
                            <i:InvokeCommandAction Command="{Binding QueryTenantsCommand}" CommandParameter="{Binding ElementName=ComboxName}"/>
                        </i:EventTrigger>
                    </i:Interaction.Triggers>
                </ComboBox>

    后台代码

     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("没有改公司名称");
                }
            }
    
       
        }
    View Code
  • 相关阅读:
    【嵌入式】arm-linux-gcc/ld/objcopy/objdump参数概述
    【Java】Java复习笔记-第四部分
    【C/C++】C语言复习笔记-17种小算法-解决实际问题
    【Java】Java复习笔记-三大排序算法,堆栈队列,生成无重复的随机数列
    【Java】Java复习笔记-第三部分
    【教程】ubuntu下安装NFS服务器
    【Java】Java复习笔记-第二部分
    【Java】Java复习笔记-第一部分
    【教程】ubuntu下安装samba服务器
    【C/C++】一道试题,深入理解数组和指针
  • 原文地址:https://www.cnblogs.com/zt199510/p/12690496.html
Copyright © 2011-2022 走看看