我有一个绑定TimeSlotsPerday的数据网格,这是一个项目列表。
<Grid>
<DataGrid x:Name="Grid" ItemsSource="{Binding TimeSlotsPerDay}" CanUserDeleteRows="False" CanUserAddRows="False" cal:Message.Attach="[Event CellEditEnding]=[Action SaveChanges($this)]">
<DataGrid.Resources>
<Style TargetType="TextBlock" x:Key="AmountDisplayStyle">
<Setter Property="Text" Value="{Binding MaxAmountOptimizationOrders}" />
</Style>
<Style TargetType="TextBox" x:Key="AmountEditStyle">
<Setter Property="Text" Value="{Binding MaxAmountOptimizationOrders}" />
</Style>
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Day}" Header="Dag" Width="Auto"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
TimeSlotsPerday包含另一个TimeSlots列表,这是以这种方式binden。
InitializeComponent();
for (int i = 0; i < 48; i++)
{
TimeSpan t = TimeSpan.FromMinutes(30 * i);
var col = new DataGridTextColumn { Header = t.ToString() };
var binding = new Binding($"TimeSlots[{i}]");
col.ElementStyle = (Style)Grid.Resources["AmountDisplayStyle"];
col.EditingElementStyle = (Style)Grid.Resources["AmountEditStyle"];
col.Binding = binding;
Grid.Columns.Add(col);
}
我对此设置的问题是,网格应在时间段内显示项MaxAmountOptimizationOrders
。
但是,如果我将此添加到绑定,编辑变得不可能,因为我需要在dto中的id。
我尝试使用elementstyle设置它,但这似乎不起作用。
所以我的问题是
如何将displaypath
设置为正确的值?
如何通过caliburn micro方法发送新值和id?
cal:Message.Attach="[Event CellEditEnding]=[Action SaveChanges($this)]