2017-10-11 191 views
1

我如何得到这是从的ItemSource填充到一个字符串,所以我可以在我的岗位是在另一个无效与string bolts = comboBox_Copy.Text;string bolts = comboBox.Copy.SelectedItem;使用我的组合框中选定的项目给予null如何获得组合框中选择的项目串

 private void boltPatterns() 
    { 
     { 
      try 
      { 
       string Url = URL_Domain + "resources/bolt-pattern"; 
       Uri serviceUri = new Uri(Url); 
       using (WebClient webClient = new WebClient()) 
       { 
        webClient.Encoding = Encoding.UTF8; 
        string api = webClient.DownloadString(serviceUri); 

        List<boltPatterns> values = JsonConvert.DeserializeObject<List<boltPatterns>>(api); 
        comboBox_Copy.ItemsSource= values; 
       } 
      } 

XAML

<ComboBox x:Name="comboBox_Copy" DisplayMemberPath="BoltPattern" SelectedItem="{Binding BoltPattern}"> 

回答

1

您正在使用的绑定(这是一件好事),所以你并不需要(在MVVM大多不应该)存取权限是组合框本身。

如果你想使用MVVM,你的顶级组件此DataContext设置为启用绑定到代码隐藏属性:

DataContext="{Binding RelativeSource={RelativeSource Self}}" 

然后在代码隐藏类中创建类型的属性SelectedBoltPatternboltPatterns(多数民众赞成你在你的例子拼写)。采用您的XAML中的SelectedItem绑定至

SelectedItem="{Binding SelectedBoltPattern}" 

请注意,它与属性名称匹配。

在代码隐藏中,您可以使用this.SelectedBoltPattern访问当前选定的项目。

一旦你习惯了绑定,你甚至可以用简单的MVVM框架来完成最简单的应用程序,比如Caliburn.Micro例如这些让这些事情变得非常简单。

+0

内工作,以及如何访问this.BoltPattern.ToString (),因为我缺少一个定义 –

+0

这取决于你绑定的位置。你使用任何MVVM框架?或者这只是XAML后面的代码? DataContext是否设置在任何地方?你可能只需要定义属性'BoldPattern'(嘿,你已经在'SelectedItem =“{Binding BoltPattern}”''中使用过它了) – ZoolWay

+0

nope只是xaml,后面跟着代码,我没有设置任何datacontext –

2
string bolts = comboBox.SelectedItem.ToString(); 
+0

这给了我一个nullrefference –

+0

将它添加到组合框中选择更改的事件处理程序,当他们选择一个项目,该字符串螺栓将更新,做一些检查,以确认没有东西被选中,这样一个if(组合框。 SelectedIndex> -1) –

+0

您还可以检查'comboBox.SelectedItem!= null'是否分配给'字符串螺栓' –

0
string bolts = comboBox.Text.ToString(); 
+0

再次阅读我的问题,我已经尝试过 –