我需要在 XamDataGrid
中显示来自一个类的数据,该类包含一些属性以及其中一个属性的有效选择列表。像这样的东西:
public class DataViewModel
{
public string Identifier {get;private set;}
public string Value {get;set;}
public IEnumeranble<string> ValidValues {get; set;}
}
我正在尝试设置XamDataGrid
,以便我有一个不可编辑的Identifier
列和一个可通过a编辑的Value
列XamComboEditor
。这是我想到的 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/