Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何绑定级联组合框? XAML ComoBox1 组合框2 视图模型 public类BackUpViewModel:MVVMSupport.ViewModel.ViewModelBase { 列表\u服务器名称列表; 列表_DBNameList; 公共列表服务器名称列表 { 获取{return\u ServerNameList;} 设置 { _ServerNameList=值; } } 公共列表DBNameList { 获取{return\u DBNameList;} 设置 { if(_DBNameList!=值) { _DBNameList=值; RaisePropertyChanged(“数据库名称列表”); } } } 选择字符串_serverSelected; 已选择公共字符串服务器 { 获取{return\u serverSelected;} 设置 { 如果(_serverSelected!=值) { _serverSelected=值; RaisePropertyChanged(“服务器选定”); } } } 公共备份视图模型() { BackUpContext servObj=新的BackUpContext(); _ServerNameList=servObj.GetServers(); serverCommand=newrelaycommand(fetchServer); _DBNameList=servObj.GetDatabases(serverSelected); } 公共RelayCommand服务器命令{get;set;} 公共服务器(对象服务器) { serverSelected=server.ToString(); } 模型 公共列表GetServers() { XmlDocument doc=新的XmlDocument(); doc.Load(@“C:\Users\477340\Desktop\newFile.xml”); XmlNodeList节点 =doc.SelectNodes(“/servers/server”); foreach(节点中的XmlNode节点) { lstServerName.Add(node.Attributes[“name”].InnerText); } 返回lstServerName; } 公共列表数据库(字符串服务器) { XmlDocument doc=新的XmlDocument(); doc.Load(@“C:\Users\477340\Desktop\newFile.xml”); XmlNodeList节点 =doc.SelectNodes(“/servers/server”); foreach(节点中的XmlNode节点) { if(node.Attributes[“name”].InnerText==服务器) { XmlNodeList databases=node.SelectNodes(“数据库”); foreach(数据库中的xmlnodedb) { lstDBName.Add(db.InnerText); } } } 返回lstDBName; }_C#_Wpf_Combobox_Cascadingdropdown - Fatal编程技术网

C# 如何绑定级联组合框? XAML ComoBox1 组合框2 视图模型 public类BackUpViewModel:MVVMSupport.ViewModel.ViewModelBase { 列表\u服务器名称列表; 列表_DBNameList; 公共列表服务器名称列表 { 获取{return\u ServerNameList;} 设置 { _ServerNameList=值; } } 公共列表DBNameList { 获取{return\u DBNameList;} 设置 { if(_DBNameList!=值) { _DBNameList=值; RaisePropertyChanged(“数据库名称列表”); } } } 选择字符串_serverSelected; 已选择公共字符串服务器 { 获取{return\u serverSelected;} 设置 { 如果(_serverSelected!=值) { _serverSelected=值; RaisePropertyChanged(“服务器选定”); } } } 公共备份视图模型() { BackUpContext servObj=新的BackUpContext(); _ServerNameList=servObj.GetServers(); serverCommand=newrelaycommand(fetchServer); _DBNameList=servObj.GetDatabases(serverSelected); } 公共RelayCommand服务器命令{get;set;} 公共服务器(对象服务器) { serverSelected=server.ToString(); } 模型 公共列表GetServers() { XmlDocument doc=新的XmlDocument(); doc.Load(@“C:\Users\477340\Desktop\newFile.xml”); XmlNodeList节点 =doc.SelectNodes(“/servers/server”); foreach(节点中的XmlNode节点) { lstServerName.Add(node.Attributes[“name”].InnerText); } 返回lstServerName; } 公共列表数据库(字符串服务器) { XmlDocument doc=新的XmlDocument(); doc.Load(@“C:\Users\477340\Desktop\newFile.xml”); XmlNodeList节点 =doc.SelectNodes(“/servers/server”); foreach(节点中的XmlNode节点) { if(node.Attributes[“name”].InnerText==服务器) { XmlNodeList databases=node.SelectNodes(“数据库”); foreach(数据库中的xmlnodedb) { lstDBName.Add(db.InnerText); } } } 返回lstDBName; }

C# 如何绑定级联组合框? XAML ComoBox1 组合框2 视图模型 public类BackUpViewModel:MVVMSupport.ViewModel.ViewModelBase { 列表\u服务器名称列表; 列表_DBNameList; 公共列表服务器名称列表 { 获取{return\u ServerNameList;} 设置 { _ServerNameList=值; } } 公共列表DBNameList { 获取{return\u DBNameList;} 设置 { if(_DBNameList!=值) { _DBNameList=值; RaisePropertyChanged(“数据库名称列表”); } } } 选择字符串_serverSelected; 已选择公共字符串服务器 { 获取{return\u serverSelected;} 设置 { 如果(_serverSelected!=值) { _serverSelected=值; RaisePropertyChanged(“服务器选定”); } } } 公共备份视图模型() { BackUpContext servObj=新的BackUpContext(); _ServerNameList=servObj.GetServers(); serverCommand=newrelaycommand(fetchServer); _DBNameList=servObj.GetDatabases(serverSelected); } 公共RelayCommand服务器命令{get;set;} 公共服务器(对象服务器) { serverSelected=server.ToString(); } 模型 公共列表GetServers() { XmlDocument doc=新的XmlDocument(); doc.Load(@“C:\Users\477340\Desktop\newFile.xml”); XmlNodeList节点 =doc.SelectNodes(“/servers/server”); foreach(节点中的XmlNode节点) { lstServerName.Add(node.Attributes[“name”].InnerText); } 返回lstServerName; } 公共列表数据库(字符串服务器) { XmlDocument doc=新的XmlDocument(); doc.Load(@“C:\Users\477340\Desktop\newFile.xml”); XmlNodeList节点 =doc.SelectNodes(“/servers/server”); foreach(节点中的XmlNode节点) { if(node.Attributes[“name”].InnerText==服务器) { XmlNodeList databases=node.SelectNodes(“数据库”); foreach(数据库中的xmlnodedb) { lstDBName.Add(db.InnerText); } } } 返回lstDBName; },c#,wpf,combobox,cascadingdropdown,C#,Wpf,Combobox,Cascadingdropdown,当我在第一个组合框中选择任何服务器时,所选服务器应传入模型类的GetDatabases(字符串服务器),并在所选服务器的基础上,在第二个组合框中填充相应的ind数据库 我也遇到过类似的问题。 最后,我通过简单地使用第一个组合框的Selection changed事件解决了这个问题,如下所示(GetSubItems是自己实现的): private void cbFirst\u SelectionChanged(对象发送者,selectionchangedventargs e) { //如果(sel

当我在第一个组合框中选择任何服务器时,所选服务器应传入模型类的GetDatabases(字符串服务器),并在所选服务器的基础上,在第二个组合框中填充相应的ind数据库


我也遇到过类似的问题。 最后,我通过简单地使用第一个组合框的Selection changed事件解决了这个问题,如下所示(GetSubItems是自己实现的):

private void cbFirst\u SelectionChanged(对象发送者,selectionchangedventargs e)
{
//如果(selIndex!=null)
{
cbSecond.ItemsSource=null;
IEnumerable str=GetSubItems(cbFirst.SelectedIndex);
cbSecond.ItemsSource=str;
}
}
<ComboBox Grid.Column="1" Grid.Row="1" Height="23" HorizontalAlignment="Center" Margin="2,2,0,0" Name="comboBoxServer"  VerticalAlignment="Top" Width="156" ItemsSource="{Binding ServerNameList}"    SelectedValuePath="key" SelectedValue="{Binding serverSelected, Mode=OneWayToSource,UpdateSourceTrigger=PropertyChanged}" >

            <i:Interaction.Triggers>
                <i:EventTrigger EventName="SelectionChanged">
                    <i:InvokeCommandAction Command="{Binding serverCommand}" CommandParameter="{Binding  ElementName=comboBoxServer,Path=SelectedItem}"/>
                </i:EventTrigger>
            </i:Interaction.Triggers>
        </ComboBox>
<ComboBox Grid.Column="1" Grid.Row="2" Height="23" HorizontalAlignment="Center" Margin="2,2,0,0" Name="comboBoxDBName" VerticalAlignment="Top" Width="156" ItemsSource="{Binding DBNameList}" SelectionChanged="comboBoxServer_SelectionChanged" SelectedValuePath="Key" SelectedValue="{Binding serverSelected, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" ></ComboBox>
public class BackUpViewModel : MVVMSupport.ViewModel.ViewModelBase
    {
        List<string> _ServerNameList;
        List<string> _DBNameList;

        public List<string> ServerNameList
        {
            get { return _ServerNameList; }
            set
            {
                _ServerNameList = value;
            }
        }

        public List<string> DBNameList
        {
            get { return _DBNameList; }
            set
            {
                if (_DBNameList != value)
                {
                    _DBNameList = value;
                    RaisePropertyChanged("DBNameList");
                }
            }
        }

        string _serverSelected;
        public string serverSelected
        {
            get { return _serverSelected; }
            set
            {
                if (_serverSelected != value)
                {
                    _serverSelected = value;
                    RaisePropertyChanged("serverSelected");
                }
            }
        }



        public BackUpViewModel()
        {

             BackUpContext servObj = new BackUpContext();

            _ServerNameList = servObj.GetServers();
            serverCommand = new RelayCommand(fetchServer);
            _DBNameList = servObj.GetDatabases(serverSelected);            
           }
public RelayCommand serverCommand { get; set; }

 public void fetchServer(object server)
        {            
            serverSelected =  server.ToString();
        }
 public List<string> GetServers()
       {

           XmlDocument doc = new XmlDocument();
           doc.Load(@"C:\Users\477340\Desktop\newFile.xml");
           XmlNodeList nodes
               = doc.SelectNodes("/servers/server");           
           foreach (XmlNode node in nodes)
           {

               lstServerName.Add(node.Attributes["name"].InnerText);

           }
           return lstServerName;
       }

       public List<string> GetDatabases(string server)
       {
           XmlDocument doc = new XmlDocument();
           doc.Load(@"C:\Users\477340\Desktop\newFile.xml");
           XmlNodeList nodes
               = doc.SelectNodes("/servers/server");
           foreach (XmlNode node in nodes)
           {

               if (node.Attributes["name"].InnerText == server)
               {
                   XmlNodeList databases = node.SelectNodes("database");

                   foreach (XmlNode db in databases)
                   {
                       lstDBName.Add(db.InnerText);
                   }
               }


           }
           return lstDBName;

       }         
   private void cbFirst_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        //if (selIndex != null)
        {
            cbSecond.ItemsSource = null;
            IEnumerable<string> str = GetSubItems(cbFirst.SelectedIndex);
            cbSecond.ItemsSource = str;
        }
    }