gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 10:42:40 33 4
gpt4 key购买 nike

我需要在 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/

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