Silverlight绑定DataGridComboBoxColumn Xaml SQL

时间:2012-04-19 12:42:50

标签: sql-server silverlight xaml binding datagridcomboboxcolumn

我将DataGrid中的ComboBox与SQL数据绑定。

Xaml代码

<c1:C1DataGrid Width="1119" Name="DataGridName" Background="Transparent" Cursor="Hand" CanUserAddRows="False" CanUserEditRows="True" MaxHeight="380" RowBackground="Transparent" AlternatingRowBackground="Transparent"  AutoGenerateColumns="False">
                        <c1:C1DataGrid.Columns>
                            <c1:DataGridCheckBoxColumn Binding="{Binding Selectionnee,Mode=TwoWay}" Header="Sélection" CanUserSort="True"/>
                            <c1:DataGridTextColumn Binding="{Binding Adresse}" Header="Adresse" CanUserSort="True" CanUserFilter="True" IsReadOnly="False"/>
                            <c1:DataGridTextColumn Binding="{Binding Nom}" Header="Nom" CanUserSort="True" IsReadOnly="True"/>
                            <c1:DataGridTextColumn Binding="{Binding NumMot,Mode=TwoWay}" Header="N° mot" CanUserSort="True" />
                            <strong><c1:DataGridComboBoxColumn Binding="{Binding Format , Mode=TwoWay}" Header="Format"/></strong>
                         </c1:C1DataGrid.Columns>

这部分工作正常。

格式值是这样的文字:“B1”,“B2”,“N1”,“N3”,......

现在我想在此ComboBox中显示与SQL数据相对应的其他文本值(如特定的枚举)。 可能不清楚,总结一下我想显示: “1. * B1”表示“B1”值 “2. * B1”表示“B2”值 “3. * B1”表示“N1”值 “4. * B1”表示“N3”值 ...

所以我尝试了很多东西,没有成功。

C#代码

private List<string> FormatList = new List<string>()
{
        "1.* B1",
        "2.* B2",
        "3.* N1",
        "4.* N3"
};

this.Resources.Add("FormatList", FormatList);

InitializeComponent();

Xaml代码

<c1:DataGridComboBoxColumn Binding="{Binding Format , Mode=TwoWay}" Header="Format" ItemsSource="{StaticResource FormatList}"/>

我不知道如何加入Format和FormatList。我已经尝试过DictionaryConverter,但我并不完全理解它。

任何人都可以帮助我吗?

由于

杰罗姆

2 个答案:

答案 0 :(得分:0)

您可以使用datatemplate执行此操作:

            <c1:DataGridColumn Binding="{Binding Format , Mode=TwoWay}" Header="Format" >
                <ComboBox ItemsSource={Binding FormatList}>
                 <ComboBox.ItemTemplate>
                    <DataTemplate>
                       <StackPanel Orientation="Horizontal">
                      <TextBox Text="{Binding PrefixPart}" />
                      <TextBox Text="{Binding NamePart}" />
                       </StackPanel>                                                            
                    </DataTemplate>
                 </ComboBox.ItemTemplate>
                </ComboBox>
            </c1:DataGridColumn>

然后创建一个名为Format

的类
public class Format
{
    public string PrefixPart{get;set;}
    public string NamePart{get;set;}
}

然后创建一个IList / ObservableCollection FormatList并添加到此列表中。

希望有所帮助。

答案 1 :(得分:0)

您必须设置所选值

[SelectedValue="{Binding Path=Format, Mode=TwoWay}"]

blog post 上,您可以下载代码以获取有效示例。