【问题标题】:Problem while binding DataGridComboBoxColumn in Datagrid在 Datagrid 中绑定 DataGridComboBoxColumn 时出现问题
【发布时间】:2009-12-29 11:47:49
【问题描述】:

我是 WPF 的新手。我有一个 wpftoolkit 数据网格,我在其中使用组合框作为 datagridcombox 列。我正在使用可观察的代码集合来绑定组合框。下面是集合及其类...

#Region "Class & Coll"
Public Class CodesColl
    Inherits ObservableCollection(Of Codes)
End Class

Public Class Codes

    Private pCode As String
    Private pDescription As String 

    Public Sub New()
        pCode = String.Empty
        pDescription = String.Empty       
    End Sub
#End Region

#Region "Property"

    Public Property fldCode() As String
        Get
            Return pCode
        End Get
        Set(ByVal value As String)
            pCode = value
        End Set
    End Property

    Public Property fldDescription() As String
        Get
            Return pDescription
        End Get
        Set(ByVal value As String)
            pDescription = value
        End Set
    End Property


#End Region
End Class

现在我想要实现的是我需要将集合与网格中的下拉列表绑定。在我的网格中,我在第一列中有两列,我必须显示代码 (fldCode),并且在选择代码时同一行的下一列将填充其描述 (fldDescription)。

我的 Xaml 是这样的:

<wpfkit:DataGrid Margin="3" Style="{DynamicResource SimpleDataGrid}" FontWeight="Normal"
 MaxHeight="100" ItemsSource="{Binding Source={StaticResource odpExistingCodesColl}}" 
 AutoGenerateColumns="False" Name="dgCodes" VerticalScrollBarVisibility="Visible" >                                 
<wpfkit:DataGrid.Columns>
    <wpfkit:DataGridTemplateColumn IsReadOnly="True">
        <wpfkit:DataGridTemplateColumn.CellTemplate>                                             
            <DataTemplate>                                                               
                <Image Style="{DynamicResource SimpleImageDelete}"/>
            </DataTemplate> 
        </wpfkit:DataGridTemplateColumn.CellTemplate>
    </wpfkit:DataGridTemplateColumn>
    <wpfkit:DataGridComboBoxColumn Header="Code" 
    DisplayMemberPath="fldCode" 
    SelectedValueBinding="{Binding fldCodes.fldCode}" 
    SelectedValuePath="fldCode"     
    SelectedItemBinding="{Binding fldCodeList}"                                        
    Width="100" x:Name="cbTCodes"  >
    <wpfkit:DataGridComboBoxColumn.ElementStyle>
        <Style TargetType="ComboBox">
            <Setter Property="IsSynchronizedWithCurrentItem" Value="False" />
            <Setter Property ="ItemsSource" Value="{Binding Path=odpCodesColl}"/>

        </Style>
        </wpfkit:DataGridComboBoxColumn.ElementStyle>
        <wpfkit:DataGridComboBoxColumn.EditingElementStyle >
            <Style TargetType="ComboBox">
                <Setter Property ="ItemsSource" Value="{Binding Path=odpCodesColl}"/>
                <Setter Property ="IsDropDownOpen" Value="True"/>
            </Style>
        </wpfkit:DataGridComboBoxColumn.EditingElementStyle>
    </wpfkit:DataGridComboBoxColumn>                                                        
    <wpfkit:DataGridTextColumn Width="375" Header="Description" x:Name="tbTCodeDescription" />
</wpfkit:DataGrid.Columns>
</wpfkit:DataGrid>

odpExistingCodesColl 这里是另一个集合,我通过它绑定整个网格并用于发送代码及其描述,但我面临以下问题

  1. 无法在下拉列表中显示代码。
  2. 不知何故,我设法这样做了,但在失去组合框的焦点后它消失了。
  3. 无法检索有关其选择更改的描述,因为我也无法找到该事件。

所以请你们尽快帮助我..任何帮助将不胜感激.. 提前致谢 阿米特·兰詹

【问题讨论】:

    标签: wpf vb.net xaml data-binding


    【解决方案1】:

    您可以在Vincent's blog 上查看有关如何使用 Wpf DataGrid(DataGridComboBoxColumn 也是)的详细信息。

    【讨论】:

    • 我已经访问过 VinSibal,但并没有那么重要。无论如何感谢您的帮助
    猜你喜欢
    • 2012-01-03
    • 2015-01-21
    • 2014-01-04
    • 1970-01-01
    • 2017-08-05
    • 2013-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多