c# - Datagrid自动添加带有父数据的项目

标签 c# wpf datagrid

我有数据网格,应该允许用户添加行。但它应该在模型属性之一定义的字段之一的位置添加项目。让任何人知道如何去做。 代码如下:

public class OrderWindowModel : BaseModel
{
    public ObservableCollection<GoodM> Goods { get; set; }
    public Service Service { get; set; }
}

public class GoodM : BaseModel
{
    public Service Service { get; set; }
    public List<Good> Goods
    {
        get{ return Service.GoodsL; }
    }

    public Good CurrGood { get; set; }
}

和xaml

<custom:DataGrid Margin="5" Grid.Row ="1" CanUserAddRows="True" CanUserDeleteRows="True" 
            AutoGenerateColumns="False" SnapsToDevicePixels="True" SelectedIndex="0" 
            CanUserReorderColumns="True" ItemsSource="{Binding Goods}" Grid.ColumnSpan="2">
    <custom:DataGrid.Columns>
        <custom:DataGridComboBoxColumn Header="Товар" DisplayMemberPath="{Binding Name}" 
                        SelectedItemBinding="{Binding CurrGood}"  ItemsSource="{Binding Goods}" Width="*">
        </custom:DataGridComboBoxColumn>
    </custom:DataGrid.Columns>
</custom:DataGrid>

最佳答案

您可以使用隐藏代码来做到这一点。 Hook 到 XAML 中的 InitializingNewItem 事件:

<DataGrid InitializingNewItem="DataGrid_InitializingNewItem"/>

在处理程序中,您将添加 NewItem,您可以在其中设置字段的值:

private void DataGrid_InitializingNewItem(object sender,
                                          InitializingNewItemEventArgs e)
{
    if (e.NewItem != null)
    {
       ((GoodM)newItem).Service = // Set value here;
    }
}

关于c# - Datagrid自动添加带有父数据的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20726930/

相关文章:

c# - 试图获得等距阴影长度的公式?

c# - 如何使用WPF为DataGrid上的每个记录添加删除按钮?

c# - 如何获取 WPF DataGrid 选定的单元格值?

C# 如果我有私钥我该如何解密?

c# - System.Speech.Synthesis.SpeechSynthesizer - 如何自定义语音?

c# - WPF XAML - 创建一个带有边框、路径和文本相互叠加的按钮,所有样式都由按钮控制

c# - 在 XAML 中查找打开的窗口

MVVM场景中的WPF Datagrid自动滚动

c# - 我可以通过传入 lambda 表达式来获取参数来检查通用对象的属性吗?

c# - 使用 Array.sort() 方法时数组的最大大小是多少?