Improve re-display function
This commit is contained in:
parent
d62821cd60
commit
c2a2e51bde
@ -55,6 +55,7 @@ namespace LibationWinForms.AvaloniaUI.ViewModels
|
||||
public abstract bool IsSeries { get; }
|
||||
public abstract bool IsEpisode { get; }
|
||||
public abstract bool IsBook { get; }
|
||||
public IBrush BackgroundBrush => IsEpisode ? App.SeriesEntryGridBackgroundBrush : null;
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
@ -9,6 +9,7 @@ namespace LibationWinForms.AvaloniaUI.ViewModels
|
||||
{
|
||||
private string _filterString;
|
||||
private string _removeBooksButtonText = "Remove # Books from Libation";
|
||||
private bool _removeBooksButtonEnabled = true;
|
||||
private bool _autoScanChecked = true;
|
||||
private bool _firstFilterIsDefault = true;
|
||||
private bool _removeButtonsVisible = true;
|
||||
@ -31,6 +32,10 @@ namespace LibationWinForms.AvaloniaUI.ViewModels
|
||||
public string RemoveBooksButtonText { get => _removeBooksButtonText; set => this.RaiseAndSetIfChanged(ref _removeBooksButtonText, value); }
|
||||
|
||||
|
||||
/// <summary> Indicates if the "Remove # Books from Libation" button is enabled </summary>
|
||||
public bool RemoveBooksButtonEnabled { get => _removeBooksButtonEnabled; set { this.RaiseAndSetIfChanged(ref _removeBooksButtonEnabled, value); } }
|
||||
|
||||
|
||||
/// <summary> Auto scanning accounts is enables </summary>
|
||||
public bool AutoScanChecked
|
||||
{
|
||||
@ -44,7 +49,7 @@ namespace LibationWinForms.AvaloniaUI.ViewModels
|
||||
}
|
||||
|
||||
|
||||
/// <summary> Indicates that the first quick filter is the default filter </summary>
|
||||
/// <summary> Indicates if the first quick filter is the default filter </summary>
|
||||
public bool FirstFilterIsDefault
|
||||
{
|
||||
get => _firstFilterIsDefault;
|
||||
@ -57,7 +62,7 @@ namespace LibationWinForms.AvaloniaUI.ViewModels
|
||||
}
|
||||
|
||||
|
||||
/// <summary> Indicates if the "Remove # Books from Libation" and "Done Removing" buttons shouls be visible </summary>
|
||||
/// <summary> Indicates if the "Remove # Books from Libation" and "Done Removing" buttons should be visible </summary>
|
||||
public bool RemoveButtonsVisible
|
||||
{
|
||||
get => _removeButtonsVisible;
|
||||
@ -70,6 +75,7 @@ namespace LibationWinForms.AvaloniaUI.ViewModels
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary> The number of accounts currently being scanned </summary>
|
||||
public int NumAccountsScanning
|
||||
{
|
||||
@ -83,7 +89,7 @@ namespace LibationWinForms.AvaloniaUI.ViewModels
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary> Indicates that Libation is currently scanning account(s) </summary>
|
||||
/// <summary> Indicates if Libation is currently scanning account(s) </summary>
|
||||
public bool ActivelyScanning => _numAccountsScanning > 0;
|
||||
/// <summary> Indicates if the "Remove Books" menu items are enabled</summary>
|
||||
public bool RemoveMenuItemsEnabled => !RemoveButtonsVisible && !ActivelyScanning;
|
||||
@ -183,16 +189,12 @@ namespace LibationWinForms.AvaloniaUI.ViewModels
|
||||
? $"Begin _PDF Only Backups: {LibraryStats.pdfsNotDownloaded} remaining"
|
||||
: "All PDFs have been downloaded";
|
||||
|
||||
|
||||
this.RaisePropertyChanged(nameof(HasBookResults));
|
||||
this.RaisePropertyChanged(nameof(StatusCountText));
|
||||
this.RaisePropertyChanged(nameof(BookBackupsToolStripText));
|
||||
this.RaisePropertyChanged(nameof(PdfBackupsToolStripText));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary> Indicates whether the library contains any books </summary>
|
||||
public bool HasBookResults => LibraryStats?.HasBookResults ?? false;
|
||||
/// <summary> Bottom-left library statistics display text </summary>
|
||||
public string StatusCountText { get; private set; } = "[Calculating backed up book quantities] | [Calculating backed up PDFs]";
|
||||
/// <summary> The "Begin Book and PDF Backup" menu item header text </summary>
|
||||
|
||||
@ -61,6 +61,7 @@ namespace LibationWinForms.AvaloniaUI.Views
|
||||
|
||||
productsDisplay.Filter(null);
|
||||
|
||||
_viewModel.RemoveBooksButtonEnabled = true;
|
||||
_viewModel.RemoveButtonsVisible = true;
|
||||
|
||||
await productsDisplay.ScanAndRemoveBooksAsync(accounts);
|
||||
@ -68,7 +69,9 @@ namespace LibationWinForms.AvaloniaUI.Views
|
||||
|
||||
public async void removeBooksBtn_Click(object sender, Avalonia.Interactivity.RoutedEventArgs e)
|
||||
{
|
||||
_viewModel.RemoveBooksButtonEnabled = false;
|
||||
await productsDisplay.RemoveCheckedBooksAsync();
|
||||
_viewModel.RemoveBooksButtonEnabled = true;
|
||||
}
|
||||
|
||||
public async void doneRemovingBtn_Click(object sender, Avalonia.Interactivity.RoutedEventArgs e)
|
||||
|
||||
@ -41,11 +41,13 @@
|
||||
</MenuItem.Icon>
|
||||
</MenuItem>
|
||||
<MenuItem IsVisible="{Binding !AnyAccounts}" Click="noAccountsYetAddAccountToolStripMenuItem_Click" Header="No accounts yet. A_dd Account..." />
|
||||
|
||||
<!-- Scan Library -->
|
||||
<MenuItem IsVisible="{Binding OneAccount}" IsEnabled="{Binding !ActivelyScanning}" Click="scanLibraryToolStripMenuItem_Click" Header="Scan _Library" />
|
||||
<MenuItem IsVisible="{Binding MultipleAccounts}" IsEnabled="{Binding !ActivelyScanning}" Click="scanLibraryOfAllAccountsToolStripMenuItem_Click" Header="Scan Library of _All Accounts" />
|
||||
<MenuItem IsVisible="{Binding MultipleAccounts}" IsEnabled="{Binding !ActivelyScanning}" Click="scanLibraryOfSomeAccountsToolStripMenuItem_Click" Header="Scan Library of _Some Accounts" />
|
||||
<Separator />
|
||||
|
||||
<!-- Remove Books -->
|
||||
<MenuItem IsVisible="{Binding OneAccount}" IsEnabled="{Binding RemoveMenuItemsEnabled}" Click="removeLibraryBooksToolStripMenuItem_Click" Header="_Remove Library Books" />
|
||||
<MenuItem IsVisible="{Binding MultipleAccounts}" IsEnabled="{Binding RemoveMenuItemsEnabled}" Click="removeAllAccountsToolStripMenuItem_Click" Header="_Remove Books from All Accounts" />
|
||||
@ -77,7 +79,7 @@
|
||||
<Setter Property="Height" Value="NaN"/>
|
||||
</Style>
|
||||
</MenuItem.Styles>
|
||||
<MenuItem IsEnabled="{Binding HasBookResults}" Click="exportLibraryToolStripMenuItem_Click" Header="E_xport Library" />
|
||||
<MenuItem IsEnabled="{Binding LibraryStats.HasBookResults}" Click="exportLibraryToolStripMenuItem_Click" Header="E_xport Library" />
|
||||
</MenuItem>
|
||||
|
||||
<!-- Quick Filters Menu -->
|
||||
@ -149,7 +151,7 @@
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Grid.Column="1" Orientation="Horizontal">
|
||||
<Button IsVisible="{Binding RemoveButtonsVisible}" Click="removeBooksBtn_Click" Height="30" Width="220" Content="{Binding RemoveBooksButtonText}"/>
|
||||
<Button IsVisible="{Binding RemoveButtonsVisible}" IsEnabled="{Binding RemoveBooksButtonEnabled}" Click="removeBooksBtn_Click" Height="30" Width="220" Content="{Binding RemoveBooksButtonText}"/>
|
||||
<Button IsVisible="{Binding RemoveButtonsVisible}" Click="doneRemovingBtn_Click" Height="30" Width="160" Margin="10,0,0,0" Content="Done Removing Books"/>
|
||||
</StackPanel>
|
||||
|
||||
|
||||
@ -53,7 +53,7 @@ namespace LibationWinForms.AvaloniaUI.Views.ProductsGrid
|
||||
string existingFilter = _viewModel?.GridEntries?.Filter;
|
||||
var newEntries = ProductsDisplayViewModel.CreateGridEntries(dbBooks);
|
||||
|
||||
var existingSeriesEntries = bindingList.InternalList.SeriesEntries().ToList();
|
||||
var existingSeriesEntries = bindingList.AllItems().SeriesEntries().ToList();
|
||||
|
||||
await Dispatcher.UIThread.InvokeAsync(() => bindingList.ReplaceList(newEntries));
|
||||
|
||||
@ -65,9 +65,11 @@ namespace LibationWinForms.AvaloniaUI.Views.ProductsGrid
|
||||
if (sEntry is SeriesEntrys2 se && !series.Liberate.Expanded)
|
||||
await Dispatcher.UIThread.InvokeAsync(() => bindingList.CollapseItem(se));
|
||||
}
|
||||
|
||||
bindingList.Filter = existingFilter;
|
||||
ReSort();
|
||||
await Dispatcher.UIThread.InvokeAsync(() =>
|
||||
{
|
||||
bindingList.Filter = existingFilter;
|
||||
ReSort();
|
||||
});
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
||||
@ -91,6 +91,9 @@ namespace LibationWinForms.AvaloniaUI.Views.ProductsGrid
|
||||
RemovableCountChanged?.Invoke(this, 0);
|
||||
removeGVColumn.IsVisible = true;
|
||||
|
||||
foreach (var item in bindingList.AllItems())
|
||||
item.PropertyChanged += Item_PropertyChanged;
|
||||
|
||||
try
|
||||
{
|
||||
if (accounts is null || accounts.Length == 0)
|
||||
@ -111,11 +114,6 @@ namespace LibationWinForms.AvaloniaUI.Views.ProductsGrid
|
||||
|
||||
foreach (var r in removable)
|
||||
r.Remove = true;
|
||||
|
||||
RemovableCountChanged?.Invoke(this, GetAllBookEntries().Count(lbe => lbe.Remove is true));
|
||||
|
||||
foreach (var item in bindingList.AllItems())
|
||||
item.PropertyChanged += Item_PropertyChanged;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
@ -8,16 +8,16 @@
|
||||
x:Class="LibationWinForms.AvaloniaUI.Views.ProductsGrid.ProductsDisplay2">
|
||||
|
||||
<Grid>
|
||||
|
||||
|
||||
<DataGrid
|
||||
Name="productsGrid"
|
||||
AutoGenerateColumns="False"
|
||||
Items="{Binding GridEntries}"
|
||||
CanUserReorderColumns="True">
|
||||
|
||||
<DataGrid.Columns>
|
||||
|
||||
<controls:DataGridCheckBoxColumnExt IsVisible="False" Header="Remove" IsThreeState="True" IsReadOnly="False" CanUserSort="True" Binding="{Binding Remove, Mode=TwoWay}" Width="70" SortMemberPath="Remove"/>
|
||||
<DataGrid.Columns>
|
||||
|
||||
<controls:DataGridCheckBoxColumnExt IsVisible="True" Header="Remove" IsThreeState="True" IsReadOnly="False" CanUserSort="True" Binding="{Binding Remove, Mode=TwoWay}" Width="70" SortMemberPath="Remove" />
|
||||
|
||||
<DataGridTemplateColumn CanUserSort="True" Width="75" Header="Liberate" SortMemberPath="Liberate">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
@ -29,122 +29,144 @@
|
||||
</StackPanel>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
</DataGridTemplateColumn>
|
||||
|
||||
<DataGridTemplateColumn CanUserSort="False" Width="80" Header="Cover" SortMemberPath="Cover">
|
||||
<DataGridTemplateColumn CanUserSort="False" Width="80" Header="Cover" SortMemberPath="Cover">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Image Tapped="Cover_Click" Height="80" Source="{Binding Cover}" ToolTip.Tip="Click to see full size" />
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
|
||||
|
||||
<DataGridTemplateColumn MinWidth="150" Width="2*" Header="Title" CanUserSort="True" SortMemberPath="Title">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Border BorderThickness="3" Height="80">
|
||||
<TextBlock VerticalAlignment="Center" TextWrapping="Wrap" Text="{Binding Title}" />
|
||||
</Border>
|
||||
<Panel Background="{Binding BackgroundBrush}">
|
||||
<Border Background="{Binding BackgroundBrush}" BorderThickness="3" Height="80">
|
||||
<TextBlock VerticalAlignment="Center" TextWrapping="Wrap" Text="{Binding Title}" />
|
||||
</Border>
|
||||
</Panel>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
|
||||
|
||||
<DataGridTemplateColumn MinWidth="80" Width="1*" Header="Authors" CanUserSort="True" SortMemberPath="Authors">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Border BorderThickness="3" Height="80">
|
||||
<TextBlock VerticalAlignment="Center" TextWrapping="Wrap" Text="{Binding Authors}" />
|
||||
</Border>
|
||||
<Panel Background="{Binding BackgroundBrush}">
|
||||
<Border BorderThickness="3" Height="80">
|
||||
<TextBlock VerticalAlignment="Center" TextWrapping="Wrap" Text="{Binding Authors}" />
|
||||
</Border>
|
||||
</Panel>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
|
||||
|
||||
<DataGridTemplateColumn MinWidth="80" Width="1*" Header="Narrators" CanUserSort="True" SortMemberPath="Narrators">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Border BorderThickness="3" Height="80">
|
||||
<TextBlock VerticalAlignment="Center" TextWrapping="Wrap" Text="{Binding Narrators}" />
|
||||
</Border>
|
||||
<Panel Background="{Binding BackgroundBrush}">
|
||||
<Border BorderThickness="3" Height="80">
|
||||
<TextBlock VerticalAlignment="Center" TextWrapping="Wrap" Text="{Binding Narrators}" />
|
||||
</Border>
|
||||
</Panel>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
|
||||
|
||||
<DataGridTemplateColumn Width="90" Header="Length" CanUserSort="True" SortMemberPath="Length">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Border BorderThickness="3" Height="80">
|
||||
<TextBlock VerticalAlignment="Center" TextWrapping="Wrap" Text="{Binding Length}" />
|
||||
</Border>
|
||||
<Panel Background="{Binding BackgroundBrush}">
|
||||
<Border BorderThickness="3" Height="80">
|
||||
<TextBlock VerticalAlignment="Center" TextWrapping="Wrap" Text="{Binding Length}" />
|
||||
</Border>
|
||||
</Panel>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
|
||||
|
||||
<DataGridTemplateColumn MinWidth="80" Width="1*" Header="Series" CanUserSort="True" SortMemberPath="Series">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Border BorderThickness="3" Height="80">
|
||||
<TextBlock VerticalAlignment="Center" TextWrapping="Wrap" Text="{Binding Series}" />
|
||||
</Border>
|
||||
<Panel Background="{Binding BackgroundBrush}">
|
||||
<Border BorderThickness="3" Height="80">
|
||||
<TextBlock VerticalAlignment="Center" TextWrapping="Wrap" Text="{Binding Series}" />
|
||||
</Border>
|
||||
</Panel>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
|
||||
|
||||
<DataGridTemplateColumn MinWidth="100" Width="1*" Header="Description" CanUserSort="True" SortMemberPath="Description">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Border BorderThickness="3" Height="80">
|
||||
<TextBlock Tapped="Description_Click" VerticalAlignment="Center" TextWrapping="Wrap" ToolTip.Tip="Click to see full description" Text="{Binding Description}" />
|
||||
</Border>
|
||||
<Panel Background="{Binding BackgroundBrush}">
|
||||
<Border BorderThickness="3" Height="80">
|
||||
<TextBlock Tapped="Description_Click" VerticalAlignment="Center" TextWrapping="Wrap" ToolTip.Tip="Click to see full description" Text="{Binding Description}" />
|
||||
</Border>
|
||||
</Panel>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
|
||||
|
||||
<DataGridTemplateColumn Width="100" Header="Category" CanUserSort="True" SortMemberPath="Category">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Border BorderThickness="3" Height="80">
|
||||
<TextBlock VerticalAlignment="Center" TextWrapping="Wrap" Text="{Binding Category}" />
|
||||
</Border>
|
||||
<Panel Background="{Binding BackgroundBrush}">
|
||||
<Border BorderThickness="3" Height="80">
|
||||
<TextBlock VerticalAlignment="Center" TextWrapping="Wrap" Text="{Binding Category}" />
|
||||
</Border>
|
||||
</Panel>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
|
||||
|
||||
<DataGridTemplateColumn Width="120" Header="Product
Rating" CanUserSort="True" SortMemberPath="ProductRating">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Border BorderThickness="3" Height="80">
|
||||
<TextBlock VerticalAlignment="Center" TextWrapping="Wrap" FontSize="11" Text="{Binding ProductRating}" />
|
||||
</Border>
|
||||
<Panel Background="{Binding BackgroundBrush}">
|
||||
<Border BorderThickness="3" Height="80">
|
||||
<TextBlock VerticalAlignment="Center" TextWrapping="Wrap" FontSize="11" Text="{Binding ProductRating}" />
|
||||
</Border>
|
||||
</Panel>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
|
||||
|
||||
<DataGridTemplateColumn Width="90" Header="Purchase
Date" CanUserSort="True" SortMemberPath="PurchaseDate">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Border BorderThickness="3" Height="80">
|
||||
<TextBlock VerticalAlignment="Center" TextWrapping="Wrap" Text="{Binding PurchaseDate}" />
|
||||
</Border>
|
||||
<Panel Background="{Binding BackgroundBrush}">
|
||||
<Border BorderThickness="3" Height="80">
|
||||
<TextBlock VerticalAlignment="Center" TextWrapping="Wrap" Text="{Binding PurchaseDate}" />
|
||||
</Border>
|
||||
</Panel>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
|
||||
|
||||
<DataGridTemplateColumn Width="120" Header="My Rating" CanUserSort="True" SortMemberPath="MyRating">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Border BorderThickness="3" Height="80">
|
||||
<TextBlock VerticalAlignment="Center" TextWrapping="Wrap" FontSize="11" Text="{Binding MyRating}" />
|
||||
</Border>
|
||||
<Panel Background="{Binding BackgroundBrush}">
|
||||
<Border BorderThickness="3" Height="80">
|
||||
<TextBlock VerticalAlignment="Center" TextWrapping="Wrap" FontSize="11" Text="{Binding MyRating}" />
|
||||
</Border>
|
||||
</Panel>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
|
||||
|
||||
<DataGridTemplateColumn Width="135" Header="Misc" CanUserSort="True" SortMemberPath="Misc">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Border BorderThickness="3" Height="80">
|
||||
<TextBlock VerticalAlignment="Center" TextWrapping="WrapWithOverflow" FontSize="10" Text="{Binding Misc}" />
|
||||
</Border>
|
||||
<Panel Background="{Binding BackgroundBrush}">
|
||||
<Border BorderThickness="3" Height="80">
|
||||
<TextBlock VerticalAlignment="Center" TextWrapping="WrapWithOverflow" FontSize="10" Text="{Binding Misc}" />
|
||||
</Border>
|
||||
</Panel>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
@ -166,6 +188,6 @@
|
||||
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
|
||||
|
||||
</Grid>
|
||||
</UserControl>
|
||||
|
||||
@ -66,31 +66,8 @@ namespace LibationWinForms.AvaloniaUI.Views.ProductsGrid
|
||||
productsGrid = this.FindControl<DataGrid>(nameof(productsGrid));
|
||||
productsGrid.Sorting += ProductsGrid_Sorting;
|
||||
productsGrid.CanUserSortColumns = true;
|
||||
productsGrid.LoadingRow += ProductsGrid_LoadingRow;
|
||||
|
||||
removeGVColumn = productsGrid.Columns[0];
|
||||
}
|
||||
|
||||
private static object tagObj = new();
|
||||
private void ProductsGrid_LoadingRow(object sender, DataGridRowEventArgs e)
|
||||
{
|
||||
if (e.Row.Tag == tagObj)
|
||||
return;
|
||||
e.Row.Tag = tagObj;
|
||||
|
||||
static IBrush GetRowColor(DataGridRow row)
|
||||
=> row.DataContext is GridEntry2 gEntry
|
||||
&& gEntry is LibraryBookEntry2 lbEntry
|
||||
&& lbEntry.Parent is not null
|
||||
? App.SeriesEntryGridBackgroundBrush
|
||||
: null;
|
||||
|
||||
e.Row.Background = GetRowColor(e.Row);
|
||||
e.Row.DataContextChanged += (sender, e) =>
|
||||
{
|
||||
var row = sender as DataGridRow;
|
||||
row.Background = GetRowColor(row);
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -53,7 +53,7 @@ namespace LibationWinForms
|
||||
Min 1492 2316
|
||||
Q1 1562 2358
|
||||
Med 1567 2379
|
||||
Q2 1567 2379
|
||||
Q2 1600 2418
|
||||
Max 2837 5835
|
||||
*/
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user