C# 单元格模板Devexpress内的数据绑定:GridControl不工作
我尝试将类对象StrategySubscription中的列表属性SubscribedSymbols作为列表的一部分绑定到DevXPress GridControl中特定列的每个单元格中的组合框,但无法使数据绑定正常工作 自动列生成器工作并将值填充到网格中。因此,我确信数据是存在的 我附上了xaml代码和数据对象以及当前输出的屏幕截图 您能帮助使数据绑定正常工作吗?我希望SubscribedSymbols中的字符串集合填充到模板列中每个单元格的组合框中 注意:前3个网格列和关联单元格绑定得非常好,唯一的问题在于将数据绑定到最后一列的每个单元格中的组合框C# 单元格模板Devexpress内的数据绑定:GridControl不工作,c#,wpf,grid,devexpress,gridcontrol,C#,Wpf,Grid,Devexpress,Gridcontrol,我尝试将类对象StrategySubscription中的列表属性SubscribedSymbols作为列表的一部分绑定到DevXPress GridControl中特定列的每个单元格中的组合框,但无法使数据绑定正常工作 自动列生成器工作并将值填充到网格中。因此,我确信数据是存在的 我附上了xaml代码和数据对象以及当前输出的屏幕截图 您能帮助使数据绑定正常工作吗?我希望SubscribedSymbols中的字符串集合填充到模板列中每个单元格的组合框中 注意:前3个网格列和关联单元格绑定得非常好
public class StrategySubscription
{
public Guid StrategyId { get; set; }
public string StrategyName { get; set; }
public int CapitalAllocation { get; set; }
public List<string> SubscribedSymbols { get; set; }
public StrategySubscription(string strategyName, Guid strategyId, int capitalAllocation, List<SymbolSubscription> symbolSubscriptions)
{
StrategyName = strategyName;
StrategyId = strategyId;
CapitalAllocation = capitalAllocation;
SubscribedSymbols = symbolSubscriptions.Select(x => x.Symbol.SymbolId).ToList();
//SubscribedSymbols = String.Join(", ", symbolSubscriptions.Select(x => x.Symbol.SymbolId).OrderBy(x=>x));
}
}
<dxg:GridControl x:Name="StrategyGrid" ItemsSource="{Binding StrategySubscriptions}" AutoGenerateColumns="None">
<dxg:GridControl.Columns>
<dxg:GridColumn Header="Strategy Id" Binding="{Binding StrategyId}"/>
<dxg:GridColumn Header="Strategy Name" Binding="{Binding StrategyName}"/>
<dxg:GridColumn Header="Strategy Capitalization" Binding="{Binding CapitalAllocation}"/>
<dxg:GridColumn Header="Symbol Subscription">
<dxg:GridColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding SubscribedSymbols}"/>
</DataTemplate>
</dxg:GridColumn.CellTemplate>
</dxg:GridColumn>
</dxg:GridControl.Columns>
<dxg:GridControl.View>
<dxg:TableView AllowEditing="False" AutoWidth="True" BestFitArea="All" AllowBestFit="True" ShowGroupPanel="True" ShowSearchPanelMode="Always" NavigationStyle="Row"/>
</dxg:GridControl.View>
</dxg:GridControl>
公共类策略订阅
{
公共Guid策略ID{get;set;}
公共字符串StrategyName{get;set;}
public int CapitalAllocation{get;set;}
公共列表下标符号{get;set;}
public StrategySubscription(字符串strategyName、Guid strategyId、int capitalAllocation、列表符号Subscriptions)
{
StrategyName=StrategyName;
StrategyId=StrategyId;
资本分配=资本分配;
SubscribedSymbols=symbolSubscriptions.Select(x=>x.Symbol.symbold.ToList();
//SubscribedSymbols=String.Join(“,”,symbolSubscriptions.Select(x=>x.Symbol.symbold).OrderBy(x=>x));
}
}
将数据添加到绑定中:
...
<dxg:GridColumn Header="Symbol Subscription">
<dxg:GridColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding Data.SubscribedSymbols}"/>
</DataTemplate>
</dxg:GridColumn.CellTemplate>
</dxg:GridColumn>
...
将数据添加到绑定中:
...
<dxg:GridColumn Header="Symbol Subscription">
<dxg:GridColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding Data.SubscribedSymbols}"/>
</DataTemplate>
</dxg:GridColumn.CellTemplate>
</dxg:GridColumn>
...
它是有效的,纯魔法:-)但背后的想法是什么?为什么Data.*解决了绑定问题?你能帮我理解吗?谢谢lot@MattWolf属性Data
解决了绑定问题,因为在这种情况下,ComboBox
的DataContext
是EditGridCellData
,其中属性Data
包含当前行数据非常感谢。我想我很难理解什么是DataContext应用于组合框的itemssource。它是有效的,纯魔法:-)但是背后的想法是什么?为什么Data.*解决了绑定问题?你能帮我理解吗?谢谢lot@MattWolf属性Data
解决了绑定问题,因为在这种情况下,ComboBox
的DataContext
是EditGridCellData
,其中属性Data
包含当前行数据非常感谢。我想我很难理解什么DataContext适用于组合框的itemssource。