gpt4 book ai didi

c# - 是否可以立即公开 DataGridComboBoxColumn?

转载 作者:行者123 更新时间:2023-12-01 16:17:34 26 4
gpt4 key购买 nike

加载数据网格时是否可以“暴露”WPF 工具包数据网格的 DataGridComboBoxColumn?默认情况下,您必须单击单元格才能显示组合框。我希望用户看到组合框可用,而无需单击单元格。我希望组合框立即可用,并且第一次单击单元格会使组合框实际上下拉。目前,您必须单击单元格,然后单击组合框下拉菜单才能显示值。

Unwanted appearance

V.S.

Correct appearance

XAML:

<dg:DataGridComboBoxColumn x:Name="ctrlStatus" Header="Status" Width="Auto" SelectedValueBinding="{Binding Port}" SelectedValuePath="Status">
<dg:DataGridComboBoxColumn.CellStyle>
<Style TargetType="dg:DataGridCell">
<EventSetter Event="Selector.SelectionChanged" Handler="SelectionChanged"/>
</Style>
</dg:DataGridComboBoxColumn.CellStyle>
</dg:DataGridComboBoxColumn>

背后代码:

List<string> _statusList;
public List<string> StatusList
{
get
{
return _statusList;
}
set
{
_statusList = value;
ctrlStatus.ItemsSource = _statusList;
}
}

谢谢,GAR8

最终解决方案:XAML

<telerik:GridViewComboBoxColumn Header="Status">
<telerik:GridViewComboBoxColumn.CellTemplate>
<DataTemplate>
<telerik:RadComboBox ItemsSource="{Binding StatusList,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=UserControl}}" SelectedValue="{Binding Port}" SelectedValuePath="Status" SelectionChanged="SelectionChanged"/>
</DataTemplate>
</telerik:GridViewComboBoxColumn.CellTemplate>
</telerik:GridViewComboBoxColumn>

背后代码:

List<string> _statusList;
public List<string> StatusList
{
get { return _statusList; }
set { _statusList = value; }
}

最佳答案

您可以使用 DataGridTemplateColumn并将 ComboBox 放置为单元格编辑模板,而不指定非编辑模板。这将使 DataGrid 始终使用 ComboBox。

更新
根据您评论中的要求,下面是一个示例。请注意,该示例不是最佳的,我会选择其他设计,但我已经以某种方式完成了它,以便它应该集成到您的解决方案中,而不会出现更大的问题。我还没有测试过。如果有错误请发表评论。

<DataGridTemplateColumn>    
<DataGridTemplateColumn.CellEditingTemplate >
<DataTemplate>
<ComboBox x:Name="ctrlStatus"
SelectedValueBinding="{Binding Port}"
SelectedValuePath="Status">
SelectionChanged="SelectionChanged"
ItemsSource="{Binding StatusList,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=Window}}"
/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>

要使用上述代码,StatusList 必须实现更改通知。如果您的 DataGrid 不在窗口中而是在另一个类中(例如在 UserControl 中),请替换相对源中的类型名称。

关于c# - 是否可以立即公开 DataGridComboBoxColumn?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7000020/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com