2009-09-24 15 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