2012-01-09 66 views
1

我有一個WPF組合框與一個圖像和名字的人的靜態列表。我試圖將選定的FirstName綁定到數據庫表。我現在做的方式(顯然是錯誤的),我唯一有約束力的目標,因此寫:ComboBoxItem的子元素的綁定文本屬性

System.Windows.Controls.ComboBoxItem

到我的數據庫表。

如何從TextBlock.Text屬性中將所選ComboBoxItem的FirstName綁定到一起?有沒有一種方法可以純粹在WPF中執行此操作?

 <ComboBox Text="{Binding Path=FirstName}"> 
     <ComboBoxItem> 
      <StackPanel Orientation="Horizontal" > 
       <Image Source="/Images/Alice.png" /> 
       <TextBlock Text="Alice" /> 
      </StackPanel> 
     </ComboBoxItem> 
     <ComboBoxItem> 
      <StackPanel Orientation="Horizontal"> 
       <Image Source="/Images/Bob.png" /> 
       <TextBlock Text="Bob" /> 
      </StackPanel> 
     </ComboBoxItem> 
    </ComboBox> 

我將更改保存到數據庫表上的一個按鈕單擊事件

private void SaveAndClose_Click(object sender, RoutedEventArgs e) 
    { 
     bindingView = (BindingListCollectionView)myCollection.View; 
     bindingView.CommitEdit(); 
     db.SubmitChanges(); 
    } 
+0

您能否顯示您用於處理選定項目的代碼已更改?你將不得不有一些代碼隱藏來寫入數據庫,因爲WPF僅僅是一個表示層。 – msarchet 2012-01-09 19:23:04

+0

我沒有使用選定的項目更改事件。我可以做? – user1081822 2012-01-09 19:41:25

回答

1

而不是硬編碼的comboboxitems,你應該使用一個DataTemplate。然後,您應該使用SelectedValuePath來根據項目中的FirstName屬性選擇值。然後你可以綁定到文本框。

如果你想直接綁定到xaml中的文本框,你需要命名元素(x:Name =「myTextBox」)。然後,像下面這樣綁定組合框的SelectedValue:SelectedValue =「{Binding ElementName =」myTextBox「,Path =」Text「}」。

通常,我不認爲將組合框綁定到文本框是一個非常好的主意。

相關問題