wpf在后面的代码中绑定到datagrid的显示路径

时间:2016-06-27 05:59:50

标签: c# wpf datagrid caliburn.micro

我有一个绑定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)]

0 个答案:

没有答案