簡體   English   中英

將 DataGrid 行號綁定到屬性

[英]Binding DataGrid Row Number to Property

我有一個DataGrid (名為OperatorDataGrid ),行號是通過LoadingRow事件設置的:

private void DataGrid_LoadingRow(object sender, DataGridRowEventArgs e)
{
    e.Row.Header = (e.Row.GetIndex() + 1).ToString();
}

並且DataGrid本身綁定到一個ObservableCollection<FilterRow> ,其中FilterRow作為一個名為Index的屬性(當前未使用)。 綁定在用戶控件的構造函數中完成:

public AdvancedFilter()
{
    InitializeComponent();
    SetDefaults();

    FilterRows.Add(new FilterRow());
    OperatorDataGrid.ItemsSource = FilterRows;
}

我不知道如何將Row.Header值綁定回 model ,因為可以不斷添加/刪除項目。 LoadingRow方法處理在DataGrid中顯示數字,但我無法將該值返回到綁定到該特定行的 object 中,因為 header 不是在 Z8CBDD6DD6BD657DZ83FDB4 的<DataGrid.Columns>部分中定義的特定列我確實嘗試了此處找到的解決方案,但是每當我添加新行時,header 單元格將顯示每行的索引為 0 任何建議,將不勝感激。

當您設置Header時,您可以簡單地自己設置源屬性:

private void DataGrid_LoadingRow(object sender, DataGridRowEventArgs e)
{
    int rowNumber = e.Row.GetIndex() + 1;
    e.Row.Header = rowNumber.ToString();

    var dataObject = e.Row.DataContext as YourClass;
    if (dataObject != null)
        dataObject.RowNumber = rowNumber;
}

然后你知道你在視圖中看到的行號與數據 object 的屬性同步。

無法直接綁定到GetIndex()之類的方法,這就是您首先處理LoadingRow事件的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM