c# - 无法在 XamDataGrid 中设置 XamComboEditor 的 ItemsSource

标签 c# infragistics xamdatagrid

我需要在 XamDataGrid 中显示来自一个类的数据,该类包含一些属性以及其中一个属性的有效选择列表。像这样的东西:

public class DataViewModel
{
    public string Identifier {get;private set;}
    public string Value {get;set;}
    public IEnumeranble<string> ValidValues {get; set;}
}

我正在尝试设置XamDataGrid,以便我有一个不可编辑的Identifier列和一个可通过a编辑的ValueXamComboEditor。这是我想到的 xaml:

    <igDP:XamDataGrid GroupByAreaLocation="None">
        <igDP:XamDataGrid.FieldLayoutSettings>
            <igDP:FieldLayoutSettings AutoGenerateFields="False"/>
        </igDP:XamDataGrid.FieldLayoutSettings>
        <igDP:XamDataGrid.FieldLayouts>
            <igDP:FieldLayout>
                <igDP:FieldLayout.Fields>
                    <igDP:Field Name="Identifier"/>
                    <igDP:Field Name="Value">
                        <igDP:Field.Settings>
                            <igDP:FieldSettings EditorType="{x:Type igEditors:XamComboEditor}">
                                <igDP:FieldSettings.EditorStyle>
                                    <Style TargetType="{x:Type igEditors:XamComboEditor}">
                                        <Setter Property="IsEditable" Value="False" />
                                        <Setter Property="ItemsSource" Value="{Binding Path=DataContext.DataItem.Values, 
                    RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type igEditors:XamComboEditor}}}" />
                                    </Style>
                                </igDP:FieldSettings.EditorStyle>
                            </igDP:FieldSettings>
                        </igDP:Field.Settings>
                    </igDP:Field>
                </igDP:FieldLayout.Fields>
            </igDP:FieldLayout>
        </igDP:XamDataGrid.FieldLayouts>
    </igDP:XamDataGrid>

XamDataGrid 上的数据绑定(bind)工作正常,但 XamComboEditor.ItemsSource 上的数据绑定(bind)不起作用,但我不确定如何修复 id。你有什么想法吗?

最佳答案

我找到了一种使用事件的替代方法。

在 XAML 中,我必须指定这些设置,而不是我所拥有的设置:

                            <igDP:FieldSettings EditorType="{x:Type igEditors:XamComboEditor}">
                                <igDP:FieldSettings.EditorStyle>
                                    <Style TargetType="{x:Type igEditors:XamComboEditor}">
                                        <Style.Setters>
                                            <EventSetter Event="Loaded" Handler="XCEloaded"/>
                                            <Setter Property="IsEditable" Value="False" />
                                        </Style.Setters>
                                    </Style>
                                </igDP:FieldSettings.EditorStyle>
                            </igDP:FieldSettings>

我用这段代码处理了该事件:

    private void XCEloaded(object sender, RoutedEventArgs e)
    {
        var drp = Utilities.GetAncestorFromType(sender as DependencyObject, typeof(DataRecordPresenter), true) as DataRecordPresenter;
        if (drp.DataRecord.DataItem != null)
            (sender as XamComboEditor).ItemsSource = (drp.DataRecord.DataItem as DataViewModel).ValidValues;
    }

它看起来不像是最干净的解决方案,但至少它有效。

关于c# - 无法在 XamDataGrid 中设置 XamComboEditor 的 ItemsSource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24800267/

相关文章:

c# - 运行 BenchmarkDotNet 时为 "Wrong assembly binding redirects"

javascript - ASP.NET Core Razor 页面 - 获取要在 Chart.js 图表上显示的列表数据

javascript - 通过 javascript 处理 Infragisitcs WebDialogWindow WindowState

c# - SHIFT 快捷方式显示为文化 "nl-BE"的 MAJ,而它应该是 SHIFT (C#.NET)

c# - 我们如何捕获 xamDataGrid 中的行删除通知?

C# 编译优化 : null coalescing operator - UPDATED - Reflector's bug?

C# .NET 4.5 如何获取基于 `GetHashCode` 的唯一对象列表

Infragistics Ultragrid 如何根据属性禁用行

c# - 无法将 cellValuePresenter/TypeConverter 应用于 XamDataGrid 单元格