Replace editable DataGridTextColumn with TextBox (#552)

This commit is contained in:
MBucari 2023-03-27 19:40:23 -06:00
parent ec9356b36e
commit 807725f6ff
7 changed files with 54 additions and 34 deletions

View File

@ -66,6 +66,6 @@ namespace LibationAvalonia.Controls
public IGridEntry GridEntry { get; init; } public IGridEntry GridEntry { get; init; }
public ContextMenu ContextMenu { get; init; } public ContextMenu ContextMenu { get; init; }
public AvaloniaList<Control> ContextMenuItems public AvaloniaList<Control> ContextMenuItems
=> ContextMenu.Items as AvaloniaList<Control>; => ContextMenu.ItemsSource as AvaloniaList<Control>;
} }
} }

View File

@ -65,10 +65,13 @@
Binding="{Binding LibraryScan, Mode=TwoWay}" Binding="{Binding LibraryScan, Mode=TwoWay}"
Header="Include in&#xa;library scan?"/> Header="Include in&#xa;library scan?"/>
<DataGridTextColumn <DataGridTemplateColumn Width="2*" Header="Audible&#xa;email/login">
Width="2*" <DataGridTemplateColumn.CellTemplate>
Binding="{Binding AccountId, Mode=TwoWay}" <DataTemplate>
Header="Audible&#xa;email/login"/> <TextBox Text="{Binding AccountId, Mode=TwoWay}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Width="Auto" Header="Locale"> <DataGridTemplateColumn Width="Auto" Header="Locale">
<DataGridTemplateColumn.CellTemplate> <DataGridTemplateColumn.CellTemplate>
@ -93,10 +96,13 @@
</DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn> </DataGridTemplateColumn>
<DataGridTextColumn <DataGridTemplateColumn Width="3*" Header="Account Nickname&#xa;(optional)">
Width="3*" <DataGridTemplateColumn.CellTemplate>
Binding="{Binding AccountName, Mode=TwoWay}" <DataTemplate>
Header="Account Nickname&#xa;(optional)"/> <TextBox Text="{Binding AccountName, Mode=TwoWay}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns> </DataGrid.Columns>
</DataGrid> </DataGrid>

View File

@ -1,5 +1,6 @@
using AudibleApi; using AudibleApi;
using AudibleUtilities; using AudibleUtilities;
using Avalonia.Collections;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Platform.Storage; using Avalonia.Platform.Storage;
using ReactiveUI; using ReactiveUI;
@ -14,7 +15,7 @@ namespace LibationAvalonia.Dialogs
{ {
public partial class AccountsDialog : DialogWindow public partial class AccountsDialog : DialogWindow
{ {
public ObservableCollection<AccountDto> Accounts { get; } = new(); public AvaloniaList<AccountDto> Accounts { get; } = new();
public class AccountDto : ViewModels.ViewModelBase public class AccountDto : ViewModels.ViewModelBase
{ {
private string _accountId; private string _accountId;

View File

@ -44,11 +44,14 @@
</DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn> </DataGridTemplateColumn>
<DataGridTextColumn <DataGridTemplateColumn Width="*" Header="Filter">
Width="*" <DataGridTemplateColumn.CellTemplate>
IsReadOnly="False" <DataTemplate>
Binding="{Binding FilterString, Mode=TwoWay}" <TextBox Text="{Binding FilterString, Mode=TwoWay}" />
Header="Filter"/> </DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Move&#xa;Up"> <DataGridTemplateColumn Header="Move&#xa;Up">
<DataGridTemplateColumn.CellTemplate> <DataGridTemplateColumn.CellTemplate>

View File

@ -28,20 +28,30 @@
<DataGrid.Columns> <DataGrid.Columns>
<DataGridTextColumn
IsReadOnly="False"
Binding="{Binding CharacterToReplace, Mode=TwoWay}"
Header="Char to&#xa;Replace"/>
<DataGridTextColumn <DataGridTemplateColumn Header="Char to&#xa;Replace">
IsReadOnly="False" <DataGridTemplateColumn.CellTemplate>
Binding="{Binding ReplacementText, Mode=TwoWay}" <DataTemplate>
Header="Replacement&#xa;Text"/> <TextBox IsReadOnly="{Binding Mandatory}" Text="{Binding CharacterToReplace, Mode=TwoWay}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Width="*" <DataGridTemplateColumn Header="Replacement&#xa;Text">
IsReadOnly="False" <DataGridTemplateColumn.CellTemplate>
Binding="{Binding Description, Mode=TwoWay}" <DataTemplate>
Header="Description"/> <TextBox Text="{Binding ReplacementText, Mode=TwoWay}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Width="*" Header="Description">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox IsReadOnly="{Binding Mandatory}" Text="{Binding Description, Mode=TwoWay}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns> </DataGrid.Columns>
</DataGrid> </DataGrid>

View File

@ -80,7 +80,7 @@ namespace LibationAvalonia
if (!selectedTab.IsVisible || !(selectedTab.Header is TextBlock header && settingTabMessages.ContainsKey(header.Text))) return; if (!selectedTab.IsVisible || !(selectedTab.Header is TextBlock header && settingTabMessages.ContainsKey(header.Text))) return;
await MessageBox.Show(settingsDialog, settingTabMessages[header.Text], header.Text + " Tab", MessageBoxButtons.OK, MessageBoxIcon.Information); await MessageBox.Show(settingsDialog, settingTabMessages[header.Text], header.Text + " Tab", MessageBoxButtons.OK);
settingTabMessages.Remove(header.Text); settingTabMessages.Remove(header.Text);
} }
@ -106,7 +106,7 @@ namespace LibationAvalonia
if (count < 1) if (count < 1)
{ {
await Dispatcher.UIThread.InvokeAsync(() => MessageBox.Show(MainForm, "Add an Audible account, then sync your library through the \"Import\" menu", "Add an Audible Account")); await Dispatcher.UIThread.InvokeAsync(() => MessageBox.Show(MainForm, "Add an Audible account, then sync your library through the \"Import\" menu", "Add an Audible Account", MessageBoxButtons.OK, MessageBoxIcon.Information));
return false; return false;
} }

View File

@ -79,7 +79,7 @@ namespace LibationWinForms
if (!selectedTab.Visible || !settingTabMessages.ContainsKey(selectedTab.Text)) return; if (!selectedTab.Visible || !settingTabMessages.ContainsKey(selectedTab.Text)) return;
MessageBox.Show(selectedTab, settingTabMessages[selectedTab.Text], selectedTab.Text + " Tab", MessageBoxButtons.OK, MessageBoxIcon.Information); MessageBox.Show(selectedTab, settingTabMessages[selectedTab.Text], selectedTab.Text + " Tab", MessageBoxButtons.OK);
settingTabMessages.Remove(selectedTab.Text); settingTabMessages.Remove(selectedTab.Text);
} }
@ -104,7 +104,7 @@ namespace LibationWinForms
if (count < 1) if (count < 1)
{ {
MainForm.Invoke(() => MessageBox.Show(MainForm, "Add an Audible account, then sync your library through the \"Import\" menu", "Add an Audible Account")); MainForm.Invoke(() => MessageBox.Show(MainForm, "Add an Audible account, then sync your library through the \"Import\" menu", "Add an Audible Account", MessageBoxButtons.OK, MessageBoxIcon.Information));
return false; return false;
} }