2009-09-24 17 views
1

我有一個c#silverlight商業應用程序,它使用ado.net實體框架和域服務類綁定到我的sql服務器數據庫,並從/ persist數據中提取數據到我的數據庫。我一直在使用dataformtoolkit命名空間佈局可以編輯/顯示數據的文本框,使用TwoWay綁定模式以允許讀/寫功能。C#Silverlight組合框 - 這是什麼?

在一些領域,我想用一個組合框代替一個文本框等 我想要做的就是有一個組合框作爲數據表的一部分,填充它的通用列表的內容包含3個字符串和堅持任何更改回到我的SQL Server數據庫就像一個文本框或複選框工程.........

我找不到一個單一的工作樣本,不是太複雜,似乎是「在那裏「 - 這是一個約束力,爲什麼這麼難?!

當前數據形的設置:

<!--DataForm Declaration--> 
<dataFormToolkit:DataForm x:Name="dataForm1" Height="410" Width="331" 
       VerticalAlignment="Top"  
       Header="Job Details" 
       CurrentItem="{Binding SelectedItem, ElementName=dataGrid1}" 
       HorizontalAlignment="Left" > 
      <dataFormToolkit:DataForm.EditTemplate> 
       <DataTemplate> 
        <StackPanel> 
         <dataFormToolkit:DataField> 
         <TextBox Text="{Binding BusinessType, Mode=TwoWay}" /> 
         </dataFormToolkit:DataField> 
        </StackPanel> 
       </DataTemplate> 
      </dataFormToolkit:DataForm.EditTemplate> 
    </dataFormToolkit:DataForm> 

幫助需要BIGTIME,在此先感謝!

回答

2

我們從字面上看只是有同樣的問題。

這是我們想出了:

把你的項目在一個ObservableCollection

你的字符串列表(或任何對象,真的)將需要在提供給組合框的地方。

public class ItemCollection : ObservableCollection<string> 
{ 
    public ItemCollection() 
    { 
     Add("Hi"); 
     Add("Howdy"); 
     Add("Hola"); 
    } 
} 

讓你列表視圖(XAML)

提供給您的組合框一旦你編譯這個類,在它自己的文件,你需要引用它。您將xamns添加到您的xaml文件中,將其放置到您的xaml中,然後將靜態引用添加到xaml中,如下所示。

... 
xmlns:alibraryxmlnsfromabove="clr-namespace:MyProject;assembly=MyProject" 
... 


<!--This goes at the top of your page for resources> 
<navigation:Page.Resources> 
    <alibraryxmlnsfromabove:ItemCollection x:Key="ItemCollection"/> 
</navigation:Page.Resources> 

設置在你看來你的組合框起來(XAML)

我們需要做兩件事情具有ComboBox:A)告訴它的列表,以及B)告訴它放在哪裏它選擇的項目。

  • 的ItemsSource =凡列表是
  • 的SelectedItem =哪裏擺放物品時,我們選擇它。

見代碼:

<dataForm:DataForm.EditTemplate> 
    <DataTemplate> 
     <StackPanel> 
      <dataForm:DataField Label="Choose One"> 
       <ComboBox 
        ItemsSource="{StaticResource ItemCollection}" 
        SelectedItem="{Binding Path=FieldNameHere, Mode=TwoWay}"/>      
      </dataForm:DataField> 
     </StackPanel>         
    </DataTemplate> 
</dataForm:DataForm.EditTemplate> 

一些旁註:

視圖將創建ItemCollection的新實例,所以你可能想擁有它抓住從一個實體模型項目,DB或Singleton對象。

該過程的下一步是使用轉換器。使用轉換器將允許您使用基本數據類型以外的對象(我們在此示例中使用了字符串)。但是,這是另一個問題。

祝你好運。希望這會讓你在那裏。

+0

優秀的答案。 ItemSource和Observable集合是關鍵。 – 2009-10-31 12:03:27