【问题标题】:Silverlight Binding DataGridComboBoxColumn Xaml SQLSilverlight 绑定 DataGridComboBoxColumn Xaml SQL
【发布时间】:2012-04-19 12:42:50
【问题描述】:

我将 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,但我不完全理解它。

谁能帮帮我?

谢谢

杰罗姆

【问题讨论】:

    标签: sql-server silverlight xaml binding datagridcomboboxcolumn


    【解决方案1】:

    您可以使用数据模板来做到这一点:

                <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 并添加到这个列表中。

    希望对您有所帮助。

    【讨论】:

      【解决方案2】:

      你必须设置选择的值

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

      您可以在我的 blog post 上下载工作示例的代码。

      【讨论】:

        猜你喜欢
        • 2011-09-14
        • 2013-04-24
        • 1970-01-01
        • 2011-07-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-24
        相关资源
        最近更新 更多