[英]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.