2017-10-11 142 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

再次閱讀我的問題,我已經嘗試過 –