mirror of
https://github.com/rmcrackan/Libation.git
synced 2026-05-09 16:16:13 -04:00
Avalonia 12 uses compiled bindings by default. Converted all remaining reflection bindings into compiled bindings, Fixed binding errors
383 lines
18 KiB
XML
383 lines
18 KiB
XML
<UserControl xmlns="https://github.com/avaloniaui"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
|
xmlns:views="clr-namespace:LibationAvalonia.Views"
|
|
xmlns:vm="clr-namespace:LibationAvalonia.ViewModels"
|
|
xmlns:uibase="clr-namespace:LibationUiBase.GridView;assembly=LibationUiBase"
|
|
xmlns:controls="clr-namespace:LibationAvalonia.Controls"
|
|
mc:Ignorable="d" d:DesignWidth="1560" d:DesignHeight="400"
|
|
x:DataType="vm:ProductsDisplayViewModel"
|
|
x:Class="LibationAvalonia.Views.ProductsDisplay">
|
|
|
|
<Grid>
|
|
|
|
<DataGrid
|
|
Name="productsGrid"
|
|
ClipboardCopyMode="IncludeHeader"
|
|
GridLinesVisibility="All"
|
|
AutoGenerateColumns="False"
|
|
ItemsSource="{Binding GridEntries}"
|
|
CanUserSortColumns="True" BorderThickness="3"
|
|
CanUserResizeColumns="True"
|
|
LoadingRow="ProductsDisplay_LoadingRow"
|
|
CanUserReorderColumns="True">
|
|
|
|
<DataGrid.Styles>
|
|
<Style Selector="DataGridColumnHeader">
|
|
<Setter Property="ContextMenu">
|
|
<ContextMenu Name="GridHeaderContextMenu" Opening="GridHeaderContextMenu_Opening" Closed="GridHeaderContextMenu_Closed">
|
|
<ContextMenu.Styles>
|
|
<Style Selector="MenuItem">
|
|
<Setter Property="Padding" Value="10,0,-10,0" />
|
|
<Style Selector="^ CheckBox">
|
|
<Setter Property="IsHitTestVisible" Value="True" />
|
|
<Setter Property="HorizontalAlignment" Value="Stretch" />
|
|
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
|
|
<Setter Property="VerticalAlignment" Value="Stretch" />
|
|
<Setter Property="VerticalContentAlignment" Value="Stretch" />
|
|
<Style Selector="^ TextBlock">
|
|
<Setter Property="VerticalAlignment" Value="Center" />
|
|
</Style>
|
|
</Style>
|
|
</Style>
|
|
</ContextMenu.Styles>
|
|
<MenuItem>
|
|
<MenuItem.Header>
|
|
<TextBlock Text="Show / Hide Columns" />
|
|
</MenuItem.Header>
|
|
</MenuItem>
|
|
<MenuItem Header="-"/>
|
|
</ContextMenu>
|
|
</Setter>
|
|
</Style>
|
|
<Style Selector="DataGridCell">
|
|
<Setter Property="ContextMenu">
|
|
<ContextMenu Opening="GridCellContextMenu_Opening" Opened="GridCellContextMenu_Opened"/>
|
|
</Setter>
|
|
</Style>
|
|
<Style Selector="DataGridCell > Panel">
|
|
<Setter Property="VerticalAlignment" Value="Stretch"/>
|
|
</Style>
|
|
<Style Selector="DataGridCell > Panel > TextBlock">
|
|
<Setter Property="VerticalAlignment" Value="Center"/>
|
|
<Setter Property="HorizontalAlignment" Value="Stretch"/>
|
|
<Setter Property="TextWrapping" Value="Wrap"/>
|
|
<Setter Property="Padding" Value="4"/>
|
|
</Style>
|
|
<Style Selector="DataGridCell Path">
|
|
<Setter Property="Stretch" Value="Uniform" />
|
|
<Setter Property="VerticalAlignment" Value="Center" />
|
|
<Setter Property="Fill" Value="{DynamicResource IconFill}" />
|
|
</Style>
|
|
<Style Selector="DataGridColumnHeader ContextMenu MenuItem">
|
|
<Setter Property="Padding" Value="0" />
|
|
<Style Selector="^:icon /template/ Viewbox#PART_IconPresenter">
|
|
<Setter Property="Height" Value="32" />
|
|
<Setter Property="Width" Value="32" />
|
|
<Setter Property="Margin" Value="6,0" />
|
|
</Style>
|
|
</Style>
|
|
</DataGrid.Styles>
|
|
|
|
<DataGrid.Columns>
|
|
|
|
<DataGridTemplateColumn
|
|
CanUserSort="True"
|
|
CanUserResize="False"
|
|
IsVisible="{Binding RemoveColumnVisible}"
|
|
PropertyChanged="RemoveColumn_PropertyChanged"
|
|
Header="Remove"
|
|
IsReadOnly="False"
|
|
SortMemberPath="Remove"
|
|
Width="75">
|
|
|
|
<DataGridTemplateColumn.CellTemplate>
|
|
<DataTemplate x:DataType="uibase:GridEntry">
|
|
<CheckBox
|
|
HorizontalAlignment="Center"
|
|
IsThreeState="True"
|
|
IsChecked="{Binding Remove, Mode=TwoWay}" />
|
|
</DataTemplate>
|
|
</DataGridTemplateColumn.CellTemplate>
|
|
</DataGridTemplateColumn>
|
|
|
|
<controls:DataGridTemplateColumnExt CanUserResize="False" CanUserSort="True" Header="Liberate" SortMemberPath="Liberate">
|
|
<DataGridTemplateColumn.CellTemplate>
|
|
<DataTemplate x:DataType="uibase:GridEntry">
|
|
<views:LiberateStatusButton
|
|
ToolTip.Tip="{Binding Liberate.ToolTip}"
|
|
BookStatus="{Binding Liberate.BookStatus}"
|
|
PdfStatus="{Binding Liberate.PdfStatus}"
|
|
IsUnavailable="{Binding Liberate.IsUnavailable}"
|
|
IsSeries="{Binding Liberate.IsSeries}"
|
|
Expanded="{Binding Liberate.Expanded}"
|
|
Click="LiberateButton_Click" />
|
|
</DataTemplate>
|
|
</DataGridTemplateColumn.CellTemplate>
|
|
<controls:DataGridTemplateColumnExt.ClipboardContentBinding>
|
|
<Binding x:DataType="uibase:GridEntry" Path="Liberate.ToolTip" />
|
|
</controls:DataGridTemplateColumnExt.ClipboardContentBinding>
|
|
</controls:DataGridTemplateColumnExt>
|
|
|
|
<controls:DataGridTemplateColumnExt Header="Cover" CanUserResize="False" CanUserSort="False" SortMemberPath="Cover">
|
|
<DataGridTemplateColumn.CellTemplate>
|
|
<DataTemplate x:DataType="uibase:GridEntry">
|
|
<Image Opacity="{Binding Liberate.Opacity}" Tapped="Cover_Click" Source="{Binding Cover}" ToolTip.Tip="Click to see full size" />
|
|
</DataTemplate>
|
|
</DataGridTemplateColumn.CellTemplate>
|
|
<controls:DataGridTemplateColumnExt.ClipboardContentBinding>
|
|
<Binding x:DataType="uibase:GridEntry" Path="LibraryBook.Book.PictureLarge" />
|
|
</controls:DataGridTemplateColumnExt.ClipboardContentBinding>
|
|
</controls:DataGridTemplateColumnExt>
|
|
|
|
<controls:DataGridTemplateColumnExt Header="Title" MinWidth="10" Width="{Binding TitleWidth, Mode=TwoWay}" CanUserSort="True" SortMemberPath="Title">
|
|
<DataGridTemplateColumn.CellTemplate>
|
|
<DataTemplate x:DataType="uibase:GridEntry">
|
|
<Panel Opacity="{Binding Liberate.Opacity}">
|
|
<TextBlock Classes="h1" Text="{Binding Title}" />
|
|
</Panel>
|
|
</DataTemplate>
|
|
</DataGridTemplateColumn.CellTemplate>
|
|
<controls:DataGridTemplateColumnExt.ClipboardContentBinding>
|
|
<Binding x:DataType="uibase:GridEntry" Path="Title" />
|
|
</controls:DataGridTemplateColumnExt.ClipboardContentBinding>
|
|
</controls:DataGridTemplateColumnExt>
|
|
|
|
<controls:DataGridTemplateColumnExt Header="Authors" MinWidth="10" Width="{Binding AuthorsWidth, Mode=TwoWay}" CanUserSort="True" SortMemberPath="Authors">
|
|
<DataGridTemplateColumn.CellTemplate>
|
|
<DataTemplate x:DataType="uibase:GridEntry">
|
|
<Panel Opacity="{Binding Liberate.Opacity}">
|
|
<TextBlock Text="{Binding Authors}" />
|
|
</Panel>
|
|
</DataTemplate>
|
|
</DataGridTemplateColumn.CellTemplate>
|
|
<controls:DataGridTemplateColumnExt.ClipboardContentBinding>
|
|
<Binding x:DataType="uibase:GridEntry" Path="Authors" />
|
|
</controls:DataGridTemplateColumnExt.ClipboardContentBinding>
|
|
</controls:DataGridTemplateColumnExt>
|
|
|
|
<controls:DataGridTemplateColumnExt Header="Narrators" MinWidth="10" Width="{Binding NarratorsWidth, Mode=TwoWay}" CanUserSort="True" SortMemberPath="Narrators">
|
|
<DataGridTemplateColumn.CellTemplate>
|
|
<DataTemplate x:DataType="uibase:GridEntry">
|
|
<Panel Opacity="{Binding Liberate.Opacity}">
|
|
<TextBlock Text="{Binding Narrators}" />
|
|
</Panel>
|
|
</DataTemplate>
|
|
</DataGridTemplateColumn.CellTemplate>
|
|
<controls:DataGridTemplateColumnExt.ClipboardContentBinding>
|
|
<Binding x:DataType="uibase:GridEntry" Path="Narrators" />
|
|
</controls:DataGridTemplateColumnExt.ClipboardContentBinding>
|
|
</controls:DataGridTemplateColumnExt>
|
|
|
|
<controls:DataGridTemplateColumnExt Header="Length" MinWidth="10" Width="{Binding LengthWidth, Mode=TwoWay}" CanUserSort="True" SortMemberPath="Length">
|
|
<DataGridTemplateColumn.CellTemplate>
|
|
<DataTemplate x:DataType="uibase:GridEntry">
|
|
<Panel Opacity="{Binding Liberate.Opacity}">
|
|
<TextBlock Text="{Binding Length}" />
|
|
</Panel>
|
|
</DataTemplate>
|
|
</DataGridTemplateColumn.CellTemplate>
|
|
<controls:DataGridTemplateColumnExt.ClipboardContentBinding>
|
|
<Binding x:DataType="uibase:GridEntry" Path="Length" />
|
|
</controls:DataGridTemplateColumnExt.ClipboardContentBinding>
|
|
</controls:DataGridTemplateColumnExt>
|
|
|
|
<controls:DataGridTemplateColumnExt Header="Series" MinWidth="10" Width="{Binding SeriesWidth, Mode=TwoWay}" CanUserSort="True" SortMemberPath="Series">
|
|
<DataGridTemplateColumn.CellTemplate>
|
|
<DataTemplate x:DataType="uibase:GridEntry">
|
|
<Panel Opacity="{Binding Liberate.Opacity}">
|
|
<TextBlock Text="{Binding Series}" />
|
|
</Panel>
|
|
</DataTemplate>
|
|
</DataGridTemplateColumn.CellTemplate>
|
|
<controls:DataGridTemplateColumnExt.ClipboardContentBinding>
|
|
<Binding x:DataType="uibase:GridEntry" Path="Series" />
|
|
</controls:DataGridTemplateColumnExt.ClipboardContentBinding>
|
|
</controls:DataGridTemplateColumnExt>
|
|
|
|
<controls:DataGridTemplateColumnExt Header="Series
Order" MinWidth="10" Width="{Binding SeriesOrderWidth, Mode=TwoWay}" CanUserSort="True" SortMemberPath="SeriesOrder">
|
|
<DataGridTemplateColumn.CellTemplate>
|
|
<DataTemplate x:DataType="uibase:GridEntry">
|
|
<Panel Opacity="{Binding Liberate.Opacity}">
|
|
<TextBlock Text="{Binding SeriesOrder}" HorizontalAlignment="Center" />
|
|
</Panel>
|
|
</DataTemplate>
|
|
</DataGridTemplateColumn.CellTemplate>
|
|
<controls:DataGridTemplateColumnExt.ClipboardContentBinding>
|
|
<Binding x:DataType="uibase:GridEntry" Path="SeriesOrder" />
|
|
</controls:DataGridTemplateColumnExt.ClipboardContentBinding>
|
|
</controls:DataGridTemplateColumnExt>
|
|
|
|
<controls:DataGridTemplateColumnExt Header="Description" MinWidth="10" Width="{Binding DescriptionWidth, Mode=TwoWay}" CanUserSort="True" SortMemberPath="Description">
|
|
<DataGridTemplateColumn.CellTemplate>
|
|
<DataTemplate x:DataType="uibase:GridEntry">
|
|
<Panel Opacity="{Binding Liberate.Opacity}" Tapped="Description_Click" ToolTip.Tip="Click to see full description" >
|
|
<TextBlock Text="{Binding Description}" VerticalAlignment="Top" />
|
|
</Panel>
|
|
</DataTemplate>
|
|
</DataGridTemplateColumn.CellTemplate>
|
|
<controls:DataGridTemplateColumnExt.ClipboardContentBinding>
|
|
<Binding x:DataType="uibase:GridEntry" Path="Description" />
|
|
</controls:DataGridTemplateColumnExt.ClipboardContentBinding>
|
|
</controls:DataGridTemplateColumnExt>
|
|
|
|
<controls:DataGridTemplateColumnExt Header="Category" MinWidth="10" Width="{Binding CategoryWidth, Mode=TwoWay}" CanUserSort="True" SortMemberPath="Category">
|
|
<DataGridTemplateColumn.CellTemplate>
|
|
<DataTemplate x:DataType="uibase:GridEntry">
|
|
<Panel Opacity="{Binding Liberate.Opacity}">
|
|
<TextBlock Text="{Binding Category}" />
|
|
</Panel>
|
|
</DataTemplate>
|
|
</DataGridTemplateColumn.CellTemplate>
|
|
<controls:DataGridTemplateColumnExt.ClipboardContentBinding>
|
|
<Binding x:DataType="uibase:GridEntry" Path="Category" />
|
|
</controls:DataGridTemplateColumnExt.ClipboardContentBinding>
|
|
</controls:DataGridTemplateColumnExt>
|
|
|
|
<controls:DataGridMyRatingColumn
|
|
x:DataType="uibase:GridEntry"
|
|
Header="Product
Rating"
|
|
IsReadOnly="true"
|
|
MinWidth="10"
|
|
SortMemberPath="ProductRating" CanUserSort="True"
|
|
OpacityBinding="{Binding Liberate.Opacity}"
|
|
ClipboardContentBinding="{Binding ProductRating}"
|
|
Binding="{Binding ProductRating}">
|
|
<controls:DataGridMyRatingColumn.Width>
|
|
<Binding x:DataType="vm:ProductsDisplayViewModel" Path="ProductRatingWidth" Mode="TwoWay" />
|
|
</controls:DataGridMyRatingColumn.Width>
|
|
</controls:DataGridMyRatingColumn>
|
|
|
|
<controls:DataGridTemplateColumnExt Header="Purchase
Date" MinWidth="10" Width="{Binding PurchaseDateWidth, Mode=TwoWay}" CanUserSort="True" SortMemberPath="PurchaseDate">
|
|
<DataGridTemplateColumn.CellTemplate>
|
|
<DataTemplate x:DataType="uibase:GridEntry">
|
|
<Panel Opacity="{Binding Liberate.Opacity}">
|
|
<TextBlock Text="{Binding PurchaseDate}" />
|
|
</Panel>
|
|
</DataTemplate>
|
|
</DataGridTemplateColumn.CellTemplate>
|
|
<controls:DataGridTemplateColumnExt.ClipboardContentBinding>
|
|
<Binding x:DataType="uibase:GridEntry" Path="PurchaseDate" />
|
|
</controls:DataGridTemplateColumnExt.ClipboardContentBinding>
|
|
</controls:DataGridTemplateColumnExt>
|
|
|
|
<controls:DataGridMyRatingColumn
|
|
x:DataType="uibase:GridEntry"
|
|
Header="My Rating"
|
|
IsReadOnly="false"
|
|
MinWidth="10"
|
|
SortMemberPath="MyRating" CanUserSort="True"
|
|
OpacityBinding="{Binding Liberate.Opacity}"
|
|
ClipboardContentBinding="{Binding MyRating}"
|
|
Binding="{Binding MyRating, Mode=TwoWay}">
|
|
<controls:DataGridMyRatingColumn.Width>
|
|
<Binding x:DataType="vm:ProductsDisplayViewModel" Path="MyRatingWidth" Mode="TwoWay" />
|
|
</controls:DataGridMyRatingColumn.Width>
|
|
</controls:DataGridMyRatingColumn>
|
|
|
|
<controls:DataGridTemplateColumnExt Header="Misc" MinWidth="10" Width="{Binding MiscWidth, Mode=TwoWay}" CanUserSort="True" SortMemberPath="Misc">
|
|
<DataGridTemplateColumn.CellTemplate>
|
|
<DataTemplate x:DataType="uibase:GridEntry">
|
|
<Panel Opacity="{Binding Liberate.Opacity}">
|
|
<TextBlock Text="{Binding Misc}" TextWrapping="WrapWithOverflow" />
|
|
</Panel>
|
|
</DataTemplate>
|
|
</DataGridTemplateColumn.CellTemplate>
|
|
<controls:DataGridTemplateColumnExt.ClipboardContentBinding>
|
|
<Binding x:DataType="uibase:GridEntry" Path="Misc" />
|
|
</controls:DataGridTemplateColumnExt.ClipboardContentBinding>
|
|
</controls:DataGridTemplateColumnExt>
|
|
|
|
<controls:DataGridTemplateColumnExt Header="Included
Until" MinWidth="10" Width="{Binding IncludedUntilWidth, Mode=TwoWay}" CanUserSort="True" SortMemberPath="IncludedUntil">
|
|
<DataGridTemplateColumn.CellTemplate>
|
|
<DataTemplate x:DataType="uibase:GridEntry">
|
|
<Panel Opacity="{Binding Liberate.Opacity}">
|
|
<TextBlock Text="{Binding IncludedUntil}" TextWrapping="WrapWithOverflow" />
|
|
</Panel>
|
|
</DataTemplate>
|
|
</DataGridTemplateColumn.CellTemplate>
|
|
<controls:DataGridTemplateColumnExt.ClipboardContentBinding>
|
|
<Binding x:DataType="uibase:GridEntry" Path="IncludedUntil" />
|
|
</controls:DataGridTemplateColumnExt.ClipboardContentBinding>
|
|
</controls:DataGridTemplateColumnExt>
|
|
|
|
<controls:DataGridTemplateColumnExt Header="Last
Download" MinWidth="10" Width="{Binding LastDownloadWidth, Mode=TwoWay}" CanUserSort="True" SortMemberPath="LastDownload">
|
|
<DataGridTemplateColumn.CellTemplate>
|
|
<DataTemplate x:DataType="uibase:GridEntry">
|
|
<Panel Opacity="{Binding Liberate.Opacity}" ToolTip.Tip="{Binding LastDownload.ToolTipText}" DoubleTapped="Version_DoubleClick">
|
|
<TextBlock Text="{Binding LastDownload}" TextWrapping="WrapWithOverflow" />
|
|
</Panel>
|
|
</DataTemplate>
|
|
</DataGridTemplateColumn.CellTemplate>
|
|
<controls:DataGridTemplateColumnExt.ClipboardContentBinding>
|
|
<Binding x:DataType="uibase:GridEntry" Path="LastDownload" />
|
|
</controls:DataGridTemplateColumnExt.ClipboardContentBinding>
|
|
</controls:DataGridTemplateColumnExt>
|
|
|
|
<controls:DataGridTemplateColumnExt Header="Is
Spatial" MinWidth="10" Width="{Binding IsSpatialWidth, Mode=TwoWay}" CanUserSort="True" SortMemberPath="IsSpatial">
|
|
<DataGridTemplateColumn.CellTemplate>
|
|
<DataTemplate x:DataType="uibase:GridEntry">
|
|
<Panel Opacity="{Binding Liberate.Opacity}">
|
|
<CheckBox IsChecked="{Binding IsSpatial}" IsEnabled="False" HorizontalAlignment="Center" VerticalAlignment="Center" />
|
|
</Panel>
|
|
</DataTemplate>
|
|
</DataGridTemplateColumn.CellTemplate>
|
|
<controls:DataGridTemplateColumnExt.ClipboardContentBinding>
|
|
<Binding x:DataType="uibase:GridEntry" Path="IsSpatial" />
|
|
</controls:DataGridTemplateColumnExt.ClipboardContentBinding>
|
|
</controls:DataGridTemplateColumnExt>
|
|
|
|
<controls:DataGridTemplateColumnExt Header="Account" MinWidth="10" Width="{Binding AccountWidth, Mode=TwoWay}" CanUserSort="True" SortMemberPath="Account">
|
|
<DataGridTemplateColumn.CellTemplate>
|
|
<DataTemplate x:DataType="uibase:GridEntry">
|
|
<Panel Opacity="{Binding Liberate.Opacity}">
|
|
<TextBlock Text="{Binding Account}" TextWrapping="Wrap" />
|
|
</Panel>
|
|
</DataTemplate>
|
|
</DataGridTemplateColumn.CellTemplate>
|
|
<controls:DataGridTemplateColumnExt.ClipboardContentBinding>
|
|
<Binding x:DataType="uibase:GridEntry" Path="Account" />
|
|
</controls:DataGridTemplateColumnExt.ClipboardContentBinding>
|
|
</controls:DataGridTemplateColumnExt>
|
|
|
|
<controls:DataGridTemplateColumnExt Header="Tags" MinWidth="10" Width="{Binding BookTagsWidth, Mode=TwoWay}" CanUserSort="True" SortMemberPath="BookTags">
|
|
<DataGridTemplateColumn.CellTemplate>
|
|
<DataTemplate x:DataType="uibase:GridEntry">
|
|
<Button
|
|
IsVisible="{Binding !Liberate.IsSeries}"
|
|
VerticalAlignment="Stretch"
|
|
HorizontalAlignment="Stretch"
|
|
VerticalContentAlignment="Stretch"
|
|
HorizontalContentAlignment="Stretch"
|
|
Click="OnTagsButtonClick"
|
|
ToolTip.Tip="Click to edit tags">
|
|
<Grid
|
|
RowDefinitions="*,*,*"
|
|
Opacity="{Binding Liberate.Opacity}">
|
|
<Viewbox
|
|
Grid.Row="1"
|
|
Stretch="Uniform"
|
|
IsVisible="{Binding BookTags, Converter={x:Static StringConverters.IsNullOrEmpty}}">
|
|
|
|
<Path Fill="{DynamicResource IconFill}" Data="{StaticResource EditTagsIcon}" />
|
|
</Viewbox>
|
|
<TextBlock
|
|
Classes="h2"
|
|
Grid.RowSpan="3"
|
|
IsVisible="{Binding BookTags, Converter={x:Static StringConverters.IsNotNullOrEmpty}}" TextWrapping="WrapWithOverflow" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding BookTags}"/>
|
|
|
|
</Grid>
|
|
</Button>
|
|
</DataTemplate>
|
|
</DataGridTemplateColumn.CellTemplate>
|
|
<controls:DataGridTemplateColumnExt.ClipboardContentBinding>
|
|
<Binding x:DataType="uibase:GridEntry" Path="BookTags" />
|
|
</controls:DataGridTemplateColumnExt.ClipboardContentBinding>
|
|
</controls:DataGridTemplateColumnExt>
|
|
|
|
</DataGrid.Columns>
|
|
</DataGrid>
|
|
</Grid>
|
|
</UserControl>
|