Browse Source

Merge pull request #8717 from workgroupengineering/fixes/Samples/ControlCatalog

Fix ControlCatalog misch
pull/8724/head
Max Katz 4 years ago
committed by GitHub
parent
commit
ffa3157a9d
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 6
      samples/ControlCatalog/MainView.xaml.cs
  2. 8
      samples/ControlCatalog/Models/Person.cs
  3. 2
      samples/ControlCatalog/Pages/AutoCompleteBoxPage.xaml
  4. 24
      samples/ControlCatalog/Pages/AutoCompleteBoxPage.xaml.cs
  5. 25
      samples/ControlCatalog/Pages/ButtonSpinnerPage.xaml.cs
  6. 2
      samples/ControlCatalog/Pages/ButtonsPage.xaml.cs
  7. 2
      samples/ControlCatalog/Pages/CarouselPage.xaml.cs
  8. 70
      samples/ControlCatalog/Pages/ClipboardPage.xaml.cs
  9. 2
      samples/ControlCatalog/Pages/ComboBoxPage.xaml.cs
  10. 20
      samples/ControlCatalog/Pages/CompositionPage.axaml.cs
  11. 22
      samples/ControlCatalog/Pages/ContextFlyoutPage.xaml.cs
  12. 23
      samples/ControlCatalog/Pages/ContextMenuPage.xaml.cs
  13. 4
      samples/ControlCatalog/Pages/DataGridPage.xaml.cs
  14. 13
      samples/ControlCatalog/Pages/DialogsPage.xaml.cs
  15. 20
      samples/ControlCatalog/Pages/DragAndDropPage.xaml.cs
  16. 2
      samples/ControlCatalog/Pages/FlyoutsPage.axaml.cs
  17. 10
      samples/ControlCatalog/Pages/ItemsRepeaterPage.xaml.cs
  18. 6
      samples/ControlCatalog/Pages/NumericUpDownPage.xaml.cs
  19. 4
      samples/ControlCatalog/Pages/OpenGlPage.xaml.cs
  20. 31
      samples/ControlCatalog/Pages/PointersPage.xaml.cs
  21. 6
      samples/ControlCatalog/ViewModels/TransitioningContentControlPageViewModel.cs

6
samples/ControlCatalog/MainView.xaml.cs

@ -22,8 +22,8 @@ namespace ControlCatalog
if (AvaloniaLocator.Current?.GetService<IRuntimePlatform>()?.GetRuntimeInfo().IsDesktop == true) if (AvaloniaLocator.Current?.GetService<IRuntimePlatform>()?.GetRuntimeInfo().IsDesktop == true)
{ {
IList tabItems = ((IList)sideBar.Items); var tabItems = (sideBar.Items as IList);
tabItems.Add(new TabItem() tabItems?.Add(new TabItem()
{ {
Header = "Screens", Header = "Screens",
Content = new ScreenPage() Content = new ScreenPage()
@ -36,7 +36,7 @@ namespace ControlCatalog
{ {
if (themes.SelectedItem is CatalogTheme theme) if (themes.SelectedItem is CatalogTheme theme)
{ {
var themeStyle = Application.Current.Styles[0]; var themeStyle = Application.Current!.Styles[0];
if (theme == CatalogTheme.FluentLight) if (theme == CatalogTheme.FluentLight)
{ {
if (App.Fluent.Mode != FluentThemeMode.Light) if (App.Fluent.Mode != FluentThemeMode.Light)

8
samples/ControlCatalog/Models/Person.cs

@ -85,7 +85,7 @@ namespace ControlCatalog.Models
} }
else else
{ {
if (_errorLookup.TryGetValue(propertyName, out List<string> errorList)) if (_errorLookup.TryGetValue(propertyName, out var errorList))
{ {
errorList.Clear(); errorList.Clear();
errorList.Add(error!); errorList.Add(error!);
@ -114,12 +114,12 @@ namespace ControlCatalog.Models
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
} }
public IEnumerable? GetErrors(string propertyName) public IEnumerable GetErrors(string? propertyName)
{ {
if (_errorLookup.TryGetValue(propertyName, out List<string> errorList)) if (propertyName is { } && _errorLookup.TryGetValue(propertyName, out var errorList))
return errorList; return errorList;
else else
return null; return Array.Empty<object>();
} }
} }
} }

2
samples/ControlCatalog/Pages/AutoCompleteBoxPage.xaml

@ -28,7 +28,7 @@
</StackPanel> </StackPanel>
<StackPanel> <StackPanel>
<TextBlock Text="MinimumPopulateDelay: 1s" /> <TextBlock Text="MinimumPopulateDelay: 1s" />
<AutoCompleteBox MinimumPopulateDelay="1" /> <AutoCompleteBox MinimumPopulateDelay="00:00:01" />
</StackPanel> </StackPanel>
<StackPanel> <StackPanel>
<TextBlock Text="MaxDropDownHeight: 60" /> <TextBlock Text="MaxDropDownHeight: 60" />

24
samples/ControlCatalog/Pages/AutoCompleteBoxPage.xaml.cs

@ -1,8 +1,6 @@
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.LogicalTree; using Avalonia.LogicalTree;
using Avalonia.Markup;
using Avalonia.Markup.Xaml; using Avalonia.Markup.Xaml;
using Avalonia.Markup.Data;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
@ -161,23 +159,23 @@ namespace ControlCatalog.Pages
private bool LastWordContains(string? searchText, string? item) private bool LastWordContains(string? searchText, string? item)
{ {
var words = searchText?.Split(' ') ?? Array.Empty<string>(); var words = searchText?.Split(' ') ?? Array.Empty<string>();
var options = Sentences.Select(x => x.First).ToArray(); var options = Sentences.Select(x => x.First)
.ToArray<LinkedListNode<string>?>();
for (var i = 0; i < words.Length; ++i) for (var i = 0; i < words.Length; ++i)
{ {
var word = words[i]; var word = words[i];
for (var j = 0; word is { } && j < options.Length; ++j) for (var j = 0; word is { } && j < options.Length; ++j)
{ {
var option = options[j]; if (options[i] is { } option)
if (option == null)
continue;
if (i == words.Length - 1)
{
options[j] = option.Value.ToLower().Contains(word.ToLower()) ? option : null;
}
else
{ {
options[j] = option.Value.Equals(word, StringComparison.InvariantCultureIgnoreCase) ? option.Next : null; if (i == words.Length - 1)
{
options[j] = option.Value.ToLower().Contains(word.ToLower()) ? option : null;
}
else
{
options[j] = option.Value.Equals(word, StringComparison.InvariantCultureIgnoreCase) ? option.Next : null;
}
} }
} }
} }

25
samples/ControlCatalog/Pages/ButtonSpinnerPage.xaml.cs

@ -21,20 +21,23 @@ namespace ControlCatalog.Pages
public void OnSpin(object sender, SpinEventArgs e) public void OnSpin(object sender, SpinEventArgs e)
{ {
var spinner = (ButtonSpinner)sender; var spinner = (ButtonSpinner)sender;
var txtBox = (TextBlock)spinner.Content;
int value = Array.IndexOf(_mountains, txtBox?.Text); if (spinner.Content is TextBlock txtBox)
if (e.Direction == SpinDirection.Increase) {
value++; int value = Array.IndexOf(_mountains, txtBox.Text);
else if (e.Direction == SpinDirection.Increase)
value--; value++;
else
value--;
if (value < 0) if (value < 0)
value = _mountains.Length - 1; value = _mountains.Length - 1;
else if (value >= _mountains.Length) else if (value >= _mountains.Length)
value = 0; value = 0;
txtBox.Text = _mountains[value];
}
txtBox.Text = _mountains[value];
} }
private readonly string[] _mountains = new[] private readonly string[] _mountains = new[]

2
samples/ControlCatalog/Pages/ButtonsPage.xaml.cs

@ -19,7 +19,7 @@ namespace ControlCatalog.Pages
AvaloniaXamlLoader.Load(this); AvaloniaXamlLoader.Load(this);
} }
public void OnRepeatButtonClick(object sender, object args) public void OnRepeatButtonClick(object? sender, object args)
{ {
repeatButtonClickCount++; repeatButtonClickCount++;
var textBlock = this.Get<TextBlock>("RepeatButtonTextBlock"); var textBlock = this.Get<TextBlock>("RepeatButtonTextBlock");

2
samples/ControlCatalog/Pages/CarouselPage.xaml.cs

@ -33,7 +33,7 @@ namespace ControlCatalog.Pages
} }
private void TransitionChanged(object sender, SelectionChangedEventArgs e) private void TransitionChanged(object? sender, SelectionChangedEventArgs e)
{ {
switch (_transition.SelectedIndex) switch (_transition.SelectedIndex)
{ {

70
samples/ControlCatalog/Pages/ClipboardPage.xaml.cs

@ -23,55 +23,79 @@ namespace ControlCatalog.Pages
AvaloniaXamlLoader.Load(this); AvaloniaXamlLoader.Load(this);
} }
private async void CopyText(object sender, RoutedEventArgs args) private async void CopyText(object? sender, RoutedEventArgs args)
{ {
await Application.Current.Clipboard.SetTextAsync(ClipboardContent.Text); if (Application.Current!.Clipboard is { } clipboard && ClipboardContent is { } clipboardContent)
await clipboard.SetTextAsync(clipboardContent.Text ?? String.Empty);
} }
private async void PasteText(object sender, RoutedEventArgs args) private async void PasteText(object? sender, RoutedEventArgs args)
{ {
ClipboardContent.Text = await Application.Current.Clipboard.GetTextAsync(); if(Application.Current!.Clipboard is { } clipboard)
{
ClipboardContent.Text = await clipboard.GetTextAsync();
}
} }
private async void CopyTextDataObject(object sender, RoutedEventArgs args) private async void CopyTextDataObject(object? sender, RoutedEventArgs args)
{ {
var dataObject = new DataObject(); if (Application.Current!.Clipboard is { } clipboard)
dataObject.Set(DataFormats.Text, ClipboardContent.Text ?? string.Empty); {
await Application.Current.Clipboard.SetDataObjectAsync(dataObject); var dataObject = new DataObject();
dataObject.Set(DataFormats.Text, ClipboardContent.Text ?? string.Empty);
await clipboard.SetDataObjectAsync(dataObject);
}
} }
private async void PasteTextDataObject(object sender, RoutedEventArgs args) private async void PasteTextDataObject(object? sender, RoutedEventArgs args)
{ {
ClipboardContent.Text = await Application.Current.Clipboard.GetDataAsync(DataFormats.Text) as string ?? string.Empty; if (Application.Current!.Clipboard is { } clipboard)
{
ClipboardContent.Text = await clipboard.GetDataAsync(DataFormats.Text) as string ?? string.Empty;
}
} }
private async void CopyFilesDataObject(object sender, RoutedEventArgs args) private async void CopyFilesDataObject(object? sender, RoutedEventArgs args)
{ {
var files = ClipboardContent.Text.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); if (Application.Current!.Clipboard is { } clipboard)
if (files.Length == 0)
{ {
return; var files = (ClipboardContent.Text ?? String.Empty)
.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
if (files.Length == 0)
{
return;
}
var dataObject = new DataObject();
dataObject.Set(DataFormats.FileNames, files);
await clipboard.SetDataObjectAsync(dataObject);
} }
var dataObject = new DataObject();
dataObject.Set(DataFormats.FileNames, files);
await Application.Current.Clipboard.SetDataObjectAsync(dataObject);
} }
private async void PasteFilesDataObject(object sender, RoutedEventArgs args) private async void PasteFilesDataObject(object? sender, RoutedEventArgs args)
{ {
var fiels = await Application.Current.Clipboard.GetDataAsync(DataFormats.FileNames) as IEnumerable<string>; if (Application.Current!.Clipboard is { } clipboard)
ClipboardContent.Text = fiels != null ? string.Join(Environment.NewLine, fiels) : string.Empty; {
var fiels = await clipboard.GetDataAsync(DataFormats.FileNames) as IEnumerable<string>;
ClipboardContent.Text = fiels != null ? string.Join(Environment.NewLine, fiels) : string.Empty;
}
} }
private async void GetFormats(object sender, RoutedEventArgs args) private async void GetFormats(object sender, RoutedEventArgs args)
{ {
var formats = await Application.Current.Clipboard.GetFormatsAsync(); if (Application.Current!.Clipboard is { } clipboard)
ClipboardContent.Text = string.Join(Environment.NewLine, formats); {
var formats = await clipboard.GetFormatsAsync();
ClipboardContent.Text = string.Join(Environment.NewLine, formats);
}
} }
private async void Clear(object sender, RoutedEventArgs args) private async void Clear(object sender, RoutedEventArgs args)
{ {
await Application.Current.Clipboard.ClearAsync(); if (Application.Current!.Clipboard is { } clipboard)
{
await clipboard.ClearAsync();
}
} }
} }
} }

2
samples/ControlCatalog/Pages/ComboBoxPage.xaml.cs

@ -17,7 +17,7 @@ namespace ControlCatalog.Pages
private void InitializeComponent() private void InitializeComponent()
{ {
AvaloniaXamlLoader.Load(this); AvaloniaXamlLoader.Load(this);
var fontComboBox = this.Find<ComboBox>("fontComboBox"); var fontComboBox = this.Get<ComboBox>("fontComboBox");
fontComboBox.Items = FontManager.Current.GetInstalledFontFamilyNames().Select(x => new FontFamily(x)); fontComboBox.Items = FontManager.Current.GetInstalledFontFamilyNames().Select(x => new FontFamily(x));
fontComboBox.SelectedIndex = 0; fontComboBox.SelectedIndex = 0;
} }

20
samples/ControlCatalog/Pages/CompositionPage.axaml.cs

@ -1,14 +1,8 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using System.Numerics;
using System.Threading.Tasks;
using Avalonia; using Avalonia;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Controls.Primitives;
using Avalonia.Interactivity;
using Avalonia.Markup.Xaml; using Avalonia.Markup.Xaml;
using Avalonia.Markup.Xaml.Templates;
using Avalonia.Media; using Avalonia.Media;
using Avalonia.Rendering.Composition; using Avalonia.Rendering.Composition;
using Avalonia.Rendering.Composition.Animations; using Avalonia.Rendering.Composition.Animations;
@ -18,7 +12,7 @@ namespace ControlCatalog.Pages;
public partial class CompositionPage : UserControl public partial class CompositionPage : UserControl
{ {
private ImplicitAnimationCollection _implicitAnimations; private ImplicitAnimationCollection? _implicitAnimations;
public CompositionPage() public CompositionPage()
{ {
@ -28,7 +22,7 @@ public partial class CompositionPage : UserControl
protected override void OnAttachedToVisualTree(VisualTreeAttachmentEventArgs e) protected override void OnAttachedToVisualTree(VisualTreeAttachmentEventArgs e)
{ {
base.OnAttachedToVisualTree(e); base.OnAttachedToVisualTree(e);
this.FindControl<ItemsControl>("Items").Items = CreateColorItems(); this.Get<ItemsControl>("Items").Items = CreateColorItems();
} }
private List<CompositionPageColorItem> CreateColorItems() private List<CompositionPageColorItem> CreateColorItems()
@ -115,7 +109,6 @@ public partial class CompositionPage : UserControl
public static void SetEnableAnimations(Border border, bool value) public static void SetEnableAnimations(Border border, bool value)
{ {
var page = border.FindAncestorOfType<CompositionPage>(); var page = border.FindAncestorOfType<CompositionPage>();
if (page == null) if (page == null)
{ {
@ -127,8 +120,11 @@ public partial class CompositionPage : UserControl
return; return;
page.EnsureImplicitAnimations(); page.EnsureImplicitAnimations();
ElementComposition.GetElementVisual((Visual)border.GetVisualParent()).ImplicitAnimations = if (border.GetVisualParent() is Visual visualParent
page._implicitAnimations; && ElementComposition.GetElementVisual(visualParent) is CompositionVisual compositionVisual)
{
compositionVisual.ImplicitAnimations = page._implicitAnimations;
}
} }
} }
@ -150,4 +146,4 @@ public class CompositionPageColorItem
{ {
Color = color; Color = color;
} }
} }

22
samples/ControlCatalog/Pages/ContextFlyoutPage.xaml.cs

@ -52,13 +52,13 @@ namespace ControlCatalog.Pages
base.OnDataContextChanged(e); base.OnDataContextChanged(e);
} }
private void ContextFlyoutPage_Closing(object sender, CancelEventArgs e) private void ContextFlyoutPage_Closing(object? sender, CancelEventArgs e)
{ {
var cancelCloseCheckBox = this.FindControl<CheckBox>("CancelCloseCheckBox"); var cancelCloseCheckBox = this.FindControl<CheckBox>("CancelCloseCheckBox");
e.Cancel = cancelCloseCheckBox?.IsChecked ?? false; e.Cancel = cancelCloseCheckBox?.IsChecked ?? false;
} }
private void ContextFlyoutPage_Opening(object sender, EventArgs e) private void ContextFlyoutPage_Opening(object? sender, EventArgs e)
{ {
if (e is CancelEventArgs cancelArgs) if (e is CancelEventArgs cancelArgs)
{ {
@ -67,20 +67,20 @@ namespace ControlCatalog.Pages
} }
} }
private void CloseFlyout(object sender, RoutedEventArgs e) private void CloseFlyout(object? sender, RoutedEventArgs e)
{ {
_textBox.ContextFlyout?.Hide(); _textBox.ContextFlyout?.Hide();
} }
public void CustomContextRequested(object sender, ContextRequestedEventArgs e) public void CustomContextRequested(object? sender, ContextRequestedEventArgs e)
{ {
var border = (Border)sender; if (sender is Border border && border.Child is TextBlock textBlock)
var textBlock = (TextBlock)border.Child; {
textBlock.Text = e.TryGetPosition(border, out var point)
textBlock.Text = e.TryGetPosition(border, out var point) ? $"Context was requested with pointer at: {point.X:N0}, {point.Y:N0}"
? $"Context was requested with pointer at: {point.X:N0}, {point.Y:N0}" : "Context was requested without pointer";
: "Context was requested without pointer"; e.Handled = true;
e.Handled = true; }
} }
private void InitializeComponent() private void InitializeComponent()

23
samples/ControlCatalog/Pages/ContextMenuPage.xaml.cs

@ -35,30 +35,31 @@ namespace ControlCatalog.Pages
base.OnDataContextChanged(e); base.OnDataContextChanged(e);
} }
private void ContextFlyoutPage_Closing(object sender, CancelEventArgs e) private void ContextFlyoutPage_Closing(object? sender, CancelEventArgs e)
{ {
var cancelCloseCheckBox = this.FindControl<CheckBox>("CancelCloseCheckBox"); var cancelCloseCheckBox = this.FindControl<CheckBox>("CancelCloseCheckBox");
e.Cancel = cancelCloseCheckBox.IsChecked ?? false; e.Cancel = cancelCloseCheckBox?.IsChecked ?? false;
} }
private void ContextFlyoutPage_Opening(object sender, EventArgs e) private void ContextFlyoutPage_Opening(object? sender, EventArgs e)
{ {
if (e is CancelEventArgs cancelArgs) if (e is CancelEventArgs cancelArgs)
{ {
var cancelCloseCheckBox = this.FindControl<CheckBox>("CancelOpenCheckBox"); var cancelCloseCheckBox = this.FindControl<CheckBox>("CancelOpenCheckBox");
cancelArgs.Cancel = cancelCloseCheckBox.IsChecked ?? false; cancelArgs.Cancel = cancelCloseCheckBox?.IsChecked ?? false;
} }
} }
public void CustomContextRequested(object sender, ContextRequestedEventArgs e) public void CustomContextRequested(object? sender, ContextRequestedEventArgs e)
{ {
var border = (Border)sender; if (sender is Border border && border.Child is TextBlock textBlock)
var textBlock = (TextBlock)border.Child; {
textBlock.Text = e.TryGetPosition(border, out var point)
? $"Context was requested with pointer at: {point.X:N0}, {point.Y:N0}"
: "Context was requested without pointer";
e.Handled = true;
}
textBlock.Text = e.TryGetPosition(border, out var point)
? $"Context was requested with pointer at: {point.X:N0}, {point.Y:N0}"
: "Context was requested without pointer";
e.Handled = true;
} }
private void InitializeComponent() private void InitializeComponent()

4
samples/ControlCatalog/Pages/DataGridPage.xaml.cs

@ -62,7 +62,7 @@ namespace ControlCatalog.Pages
addButton.Click += (a, b) => collectionView3.AddNew(); addButton.Click += (a, b) => collectionView3.AddNew();
} }
private void Dg1_LoadingRow(object sender, DataGridRowEventArgs e) private void Dg1_LoadingRow(object? sender, DataGridRowEventArgs e)
{ {
e.Row.Header = e.Row.GetIndex() + 1; e.Row.Header = e.Row.GetIndex() + 1;
} }
@ -74,7 +74,7 @@ namespace ControlCatalog.Pages
private class ReversedStringComparer : IComparer<object>, IComparer private class ReversedStringComparer : IComparer<object>, IComparer
{ {
public int Compare(object x, object y) public int Compare(object? x, object? y)
{ {
if (x is string left && y is string right) if (x is string left && y is string right)
{ {

13
samples/ControlCatalog/Pages/DialogsPage.xaml.cs

@ -111,9 +111,16 @@ namespace ControlCatalog.Pages
Title = "Select folder", Title = "Select folder",
Directory = lastSelectedDirectory?.TryGetUri(out var path) == true ? path.LocalPath : null Directory = lastSelectedDirectory?.TryGetUri(out var path) == true ? path.LocalPath : null
}.ShowAsync(GetWindow()); }.ShowAsync(GetWindow());
lastSelectedDirectory = new BclStorageFolder(new System.IO.DirectoryInfo(result)); if (string.IsNullOrEmpty(result))
results.Items = new [] { result }; {
resultsVisible.IsVisible = result != null; resultsVisible.IsVisible = false;
}
else
{
lastSelectedDirectory = new BclStorageFolder(new System.IO.DirectoryInfo(result));
results.Items = new[] { result };
resultsVisible.IsVisible = true;
}
}; };
this.Get<Button>("OpenBoth").Click += async delegate this.Get<Button>("OpenBoth").Click += async delegate
{ {

20
samples/ControlCatalog/Pages/DragAndDropPage.xaml.cs

@ -1,9 +1,9 @@
using Avalonia.Controls; using System;
using Avalonia.Input;
using Avalonia.Markup.Xaml;
using System;
using System.Linq; using System.Linq;
using System.Reflection; using System.Reflection;
using Avalonia.Controls;
using Avalonia.Input;
using Avalonia.Markup.Xaml;
namespace ControlCatalog.Pages namespace ControlCatalog.Pages
{ {
@ -27,9 +27,9 @@ namespace ControlCatalog.Pages
void SetupDnd(string suffix, Action<DataObject> factory, DragDropEffects effects) void SetupDnd(string suffix, Action<DataObject> factory, DragDropEffects effects)
{ {
var dragMe = this.Get<Border>("DragMe" + suffix); var dragMe = this.Get<Border>("DragMe" + suffix);
var dragState = this.Get<TextBlock>("DragState"+suffix); var dragState = this.Get<TextBlock>("DragState" + suffix);
async void DoDrag(object sender, Avalonia.Input.PointerPressedEventArgs e) async void DoDrag(object? sender, Avalonia.Input.PointerPressedEventArgs e)
{ {
var dragData = new DataObject(); var dragData = new DataObject();
factory(dragData); factory(dragData);
@ -55,7 +55,7 @@ namespace ControlCatalog.Pages
} }
} }
void DragOver(object sender, DragEventArgs e) void DragOver(object? sender, DragEventArgs e)
{ {
if (e.Source is Control c && c.Name == "MoveTarget") if (e.Source is Control c && c.Name == "MoveTarget")
{ {
@ -73,7 +73,7 @@ namespace ControlCatalog.Pages
e.DragEffects = DragDropEffects.None; e.DragEffects = DragDropEffects.None;
} }
void Drop(object sender, DragEventArgs e) void Drop(object? sender, DragEventArgs e)
{ {
if (e.Source is Control c && c.Name == "MoveTarget") if (e.Source is Control c && c.Name == "MoveTarget")
{ {
@ -83,11 +83,11 @@ namespace ControlCatalog.Pages
{ {
e.DragEffects = e.DragEffects & (DragDropEffects.Copy); e.DragEffects = e.DragEffects & (DragDropEffects.Copy);
} }
if (e.Data.Contains(DataFormats.Text)) if (e.Data.Contains(DataFormats.Text))
_DropState.Text = e.Data.GetText(); _DropState.Text = e.Data.GetText();
else if (e.Data.Contains(DataFormats.FileNames)) else if (e.Data.Contains(DataFormats.FileNames))
_DropState.Text = string.Join(Environment.NewLine, e.Data.GetFileNames()); _DropState.Text = string.Join(Environment.NewLine, e.Data.GetFileNames() ?? Array.Empty<string>());
else if (e.Data.Contains(CustomFormat)) else if (e.Data.Contains(CustomFormat))
_DropState.Text = "Custom: " + e.Data.Get(CustomFormat); _DropState.Text = "Custom: " + e.Data.Get(CustomFormat);
} }

2
samples/ControlCatalog/Pages/FlyoutsPage.axaml.cs

@ -20,7 +20,7 @@ namespace ControlCatalog.Pages
SetXamlTexts(); SetXamlTexts();
} }
private void Afp_DoubleTapped(object sender, RoutedEventArgs e) private void Afp_DoubleTapped(object? sender, RoutedEventArgs e)
{ {
if (sender is Panel p) if (sender is Panel p)
{ {

10
samples/ControlCatalog/Pages/ItemsRepeaterPage.xaml.cs

@ -123,7 +123,7 @@ namespace ControlCatalog.Pages
element.BringIntoView(); element.BringIntoView();
} }
private void RepeaterClick(object sender, PointerPressedEventArgs e) private void RepeaterClick(object? sender, PointerPressedEventArgs e)
{ {
if ((e.Source as TextBlock)?.DataContext is ItemsRepeaterPageViewModel.Item item) if ((e.Source as TextBlock)?.DataContext is ItemsRepeaterPageViewModel.Item item)
{ {
@ -132,7 +132,7 @@ namespace ControlCatalog.Pages
} }
} }
private void RepeaterOnKeyDown(object sender, KeyEventArgs e) private void RepeaterOnKeyDown(object? sender, KeyEventArgs e)
{ {
if (e.Key == Key.F5) if (e.Key == Key.F5)
{ {
@ -140,17 +140,17 @@ namespace ControlCatalog.Pages
} }
} }
private void scrollToLast_Click(object sender, Avalonia.Interactivity.RoutedEventArgs e) private void scrollToLast_Click(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
{ {
ScrollTo(_viewModel.Items.Count - 1); ScrollTo(_viewModel.Items.Count - 1);
} }
private void scrollToRandom_Click(object sender, Avalonia.Interactivity.RoutedEventArgs e) private void scrollToRandom_Click(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
{ {
ScrollTo(_random.Next(_viewModel.Items.Count - 1)); ScrollTo(_random.Next(_viewModel.Items.Count - 1));
} }
private void scrollToSelected_Click(object sender, Avalonia.Interactivity.RoutedEventArgs e) private void scrollToSelected_Click(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
{ {
ScrollTo(_selectedIndex); ScrollTo(_selectedIndex);
} }

6
samples/ControlCatalog/Pages/NumericUpDownPage.xaml.cs

@ -2,9 +2,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Globalization; using System.Globalization;
using System.Linq; using System.Linq;
using Avalonia;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Controls.Primitives;
using Avalonia.Markup.Xaml; using Avalonia.Markup.Xaml;
using MiniMvvm; using MiniMvvm;
@ -29,7 +27,7 @@ namespace ControlCatalog.Pages
public class NumbersPageViewModel : ViewModelBase public class NumbersPageViewModel : ViewModelBase
{ {
private IList<FormatObject>? _formats; private IList<FormatObject>? _formats;
private FormatObject _selectedFormat; private FormatObject? _selectedFormat;
private IList<Location>? _spinnerLocations; private IList<Location>? _spinnerLocations;
private double _doubleValue; private double _doubleValue;
@ -89,7 +87,7 @@ namespace ControlCatalog.Pages
.Where(c => new[] { "en-US", "en-GB", "fr-FR", "ar-DZ", "zh-CH", "cs-CZ" }.Contains(c.Name)) .Where(c => new[] { "en-US", "en-GB", "fr-FR", "ar-DZ", "zh-CH", "cs-CZ" }.Contains(c.Name))
.ToArray(); .ToArray();
public FormatObject SelectedFormat public FormatObject? SelectedFormat
{ {
get { return _selectedFormat; } get { return _selectedFormat; }
set { this.RaiseAndSetIfChanged(ref _selectedFormat, value); } set { this.RaiseAndSetIfChanged(ref _selectedFormat, value); }

4
samples/ControlCatalog/Pages/OpenGlPage.xaml.cs

@ -68,7 +68,7 @@ namespace ControlCatalog.Pages
set => SetAndRaise(DiscoProperty, ref _disco, value); set => SetAndRaise(DiscoProperty, ref _disco, value);
} }
private string _info; private string _info = string.Empty;
public static readonly DirectProperty<OpenGlPageControl, string> InfoProperty = public static readonly DirectProperty<OpenGlPageControl, string> InfoProperty =
AvaloniaProperty.RegisterDirect<OpenGlPageControl, string>("Info", o => o.Info, (o, v) => o.Info = v); AvaloniaProperty.RegisterDirect<OpenGlPageControl, string>("Info", o => o.Info, (o, v) => o.Info = v);
@ -205,7 +205,7 @@ namespace ControlCatalog.Pages
public OpenGlPageControl() public OpenGlPageControl()
{ {
var name = typeof(OpenGlPage).Assembly.GetManifestResourceNames().First(x => x.Contains("teapot.bin")); var name = typeof(OpenGlPage).Assembly.GetManifestResourceNames().First(x => x.Contains("teapot.bin"));
using (var sr = new BinaryReader(typeof(OpenGlPage).Assembly.GetManifestResourceStream(name))) using (var sr = new BinaryReader(typeof(OpenGlPage).Assembly.GetManifestResourceStream(name)!))
{ {
var buf = new byte[sr.ReadInt32()]; var buf = new byte[sr.ReadInt32()];
sr.Read(buf, 0, buf.Length); sr.Read(buf, 0, buf.Length);

31
samples/ControlCatalog/Pages/PointersPage.xaml.cs

@ -1,8 +1,6 @@
using System; using System;
using Avalonia;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Input; using Avalonia.Input;
using Avalonia.Interactivity;
using Avalonia.Markup.Xaml; using Avalonia.Markup.Xaml;
namespace ControlCatalog.Pages; namespace ControlCatalog.Pages;
@ -31,28 +29,33 @@ public class PointersPage : UserControl
border2.PointerExited += Border_PointerUpdated; border2.PointerExited += Border_PointerUpdated;
} }
private void Border_PointerUpdated(object sender, PointerEventArgs e) private void Border_PointerUpdated(object? sender, PointerEventArgs e)
{ {
var textBlock = (TextBlock)((Border)sender).Child; if (sender is Border border && border.Child is TextBlock textBlock)
var position = e.GetPosition((Border)sender); {
textBlock.Text = @$"Type: {e.Pointer.Type} var position = e.GetPosition(border);
textBlock.Text = @$"Type: {e.Pointer.Type}
Captured: {e.Pointer.Captured == sender} Captured: {e.Pointer.Captured == sender}
PointerId: {e.Pointer.Id} PointerId: {e.Pointer.Id}
Position: {(int)position.X} {(int)position.Y}"; Position: {(int)position.X} {(int)position.Y}";
e.Handled = true; e.Handled = true;
}
} }
private void Border_PointerCaptureLost(object sender, PointerCaptureLostEventArgs e) private void Border_PointerCaptureLost(object? sender, PointerCaptureLostEventArgs e)
{ {
var textBlock = (TextBlock)((Border)sender).Child; if (sender is Border border && border.Child is TextBlock textBlock)
textBlock.Text = @$"Type: {e.Pointer.Type} {
textBlock.Text = @$"Type: {e.Pointer.Type}
Captured: {e.Pointer.Captured == sender} Captured: {e.Pointer.Captured == sender}
PointerId: {e.Pointer.Id} PointerId: {e.Pointer.Id}
Position: ??? ???"; Position: ??? ???";
e.Handled = true; e.Handled = true;
}
} }
private void Border_PointerReleased(object sender, PointerReleasedEventArgs e) private void Border_PointerReleased(object? sender, PointerReleasedEventArgs e)
{ {
if (e.Pointer.Captured == sender) if (e.Pointer.Captured == sender)
{ {
@ -65,9 +68,9 @@ Position: ??? ???";
} }
} }
private void Border_PointerPressed(object sender, PointerPressedEventArgs e) private void Border_PointerPressed(object? sender, PointerPressedEventArgs e)
{ {
e.Pointer.Capture((Border)sender); e.Pointer.Capture(sender as Border);
e.Handled = true; e.Handled = true;
} }

6
samples/ControlCatalog/ViewModels/TransitioningContentControlPageViewModel.cs

@ -117,9 +117,9 @@ namespace ControlCatalog.ViewModels
PageTransitions[3].Transition = new PageSlide(TimeSpan.FromMilliseconds(Duration), PageSlide.SlideAxis.Vertical); PageTransitions[3].Transition = new PageSlide(TimeSpan.FromMilliseconds(Duration), PageSlide.SlideAxis.Vertical);
var compositeTransition = new CompositePageTransition(); var compositeTransition = new CompositePageTransition();
compositeTransition.PageTransitions.Add(PageTransitions[1].Transition); compositeTransition.PageTransitions.Add(PageTransitions[1].Transition!);
compositeTransition.PageTransitions.Add(PageTransitions[2].Transition); compositeTransition.PageTransitions.Add(PageTransitions[2].Transition!);
compositeTransition.PageTransitions.Add(PageTransitions[3].Transition); compositeTransition.PageTransitions.Add(PageTransitions[3].Transition!);
PageTransitions[4].Transition = compositeTransition; PageTransitions[4].Transition = compositeTransition;
PageTransitions[5].Transition = new CustomTransition(TimeSpan.FromMilliseconds(Duration)); PageTransitions[5].Transition = new CustomTransition(TimeSpan.FromMilliseconds(Duration));

Loading…
Cancel
Save