【问题标题】:Populate a Combobox inside a datagrid在数据网格中填充组合框
【发布时间】:2018-12-13 18:31:40
【问题描述】:

我正在尝试在 WPF 数据网格中填充组合框。 Xaml 就是这个

    <DataGrid x:Name="objects"  ItemsSource="{Binding}"  AutoGenerateColumns="False" HorizontalAlignment="Left" Height="91" Margin="96,56,0,0" VerticalAlignment="Top" Width="260" SelectionChanged="DataGrid_SelectionChanged" RenderTransformOrigin="0.581,0.499">
        <DataGrid.Columns>
            <DataGridTextColumn Header="Object Name" Binding="{Binding objName}" ClipboardContentBinding="{x:Null}"/>
            <DataGridComboBoxColumn x:Name="dataGridComboBoxColumn"  Header="Material" ClipboardContentBinding="{x:Null}" ItemsSource="{Binding Items, RelativeSource={RelativeSource AncestorType=Window}}" SelectedValuePath="{Binding Path=SelectedAwaitingItem, Mode=TwoWay}" Width="Auto" TextBinding="{x:Null}"/>
        </DataGrid.Columns>

    </DataGrid>   

代码是

class objects(object):
  def __init__(self, objName,Items):
      self.objName = objName
      self.SelectedAwaitingItem = ""
      self.Items = Items    


    gridUnknownDocs = LogicalTreeHelper.FindLogicalNode(self, 'objects')
    item = []
    politetitles = {
    1 : ('Mr' ), 
    2 : ('Ms'),
    3 : ('Mrs'), 
    4 : ('Sir'),
    }


    item.append(objects("Cube",["3" "2"]))
    item.append(objects("Square",["1" "2"]))
    gridUnknownDocs.ItemsSource = item

我能够看到正确填充的文本框(使用 Cube 和 Square 值),但组合框始终显示为空 关于我所缺少的任何建议? 谢谢 最大

【问题讨论】:

    标签: python wpf datagrid


    【解决方案1】:

    任何以 path 结尾的属性都需要一个作为属性名称的字符串。 您有一个 selectedvaluepath 的绑定。 我不关注实际包含的项目,但您需要告诉它哪个属性是值以及要显示哪个。 https://social.technet.microsoft.com/wiki/contents/articles/26347.wpf-combobox-binding-in-datagrid.aspx

    【讨论】:

    • 嗨,安迪,谢谢。你是对的,我使用的是 selectedvaluepath 而不是 selectedvaluebinding 但我仍然无法在组合框中添加一个简单的 2 个值列表,并且我没有从 VS 中得到任何错误(它同样没有填充列表)。我认为我在 python 代码中做错了什么以正确填充 Itemssource 的值。你有一个简单的例子可以分享吗?谢谢
    【解决方案2】:

    这就是您将DataGridComboBoxColumnItemsSource 属性绑定到视觉祖先的属性的方式:

    <DataGridComboBoxColumn DisplayMemberPath="Material" ClipboardContentBinding="{x:Null}" SelectedValuePath="{Binding Path=SelectedAwaitingItem, Mode=TwoWay}" Width="Auto" TextBinding="{x:Null}">
        <DataGridComboBoxColumn.ElementStyle>
            <Style>
                <Setter Property="ComboBox.ItemsSource" Value="{Binding Items, RelativeSource={RelativeSource AncestorType=Window}}" />
            </Style>
        </DataGridComboBoxColumn.ElementStyle>
        <DataGridComboBoxColumn.EditingElementStyle>
            <Style>
                <Setter Property="ComboBox.ItemsSource" Value="{Binding Items, RelativeSource={RelativeSource AncestorType=Window}}" />
            </Style>
        </DataGridComboBoxColumn.EditingElementStyle>
    </DataGridComboBoxColumn>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-05
      • 1970-01-01
      • 1970-01-01
      • 2015-01-17
      • 2021-06-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多