diff --git a/demo/Ursa.Demo/Pages/IPv4BoxDemo.axaml b/demo/Ursa.Demo/Pages/IPv4BoxDemo.axaml index 0d674dd..6d9189e 100644 --- a/demo/Ursa.Demo/Pages/IPv4BoxDemo.axaml +++ b/demo/Ursa.Demo/Pages/IPv4BoxDemo.axaml @@ -4,14 +4,13 @@ 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:pages="clr-namespace:Ursa.Demo.Pages" xmlns:u="https://irihi.tech/ursa" + xmlns:vm="clr-namespace:Ursa.Demo.ViewModels;assembly=Ursa.Demo" + x:DataType="vm:IPv4BoxDemoViewModel" + x:CompileBindings="True" d:DesignHeight="450" d:DesignWidth="800" mc:Ignorable="d"> - - - - + diff --git a/demo/Ursa.Demo/Pages/IPv4BoxDemo.axaml.cs b/demo/Ursa.Demo/Pages/IPv4BoxDemo.axaml.cs index c865da8..c3a050c 100644 --- a/demo/Ursa.Demo/Pages/IPv4BoxDemo.axaml.cs +++ b/demo/Ursa.Demo/Pages/IPv4BoxDemo.axaml.cs @@ -12,18 +12,5 @@ public partial class IPv4BoxDemo : UserControl public IPv4BoxDemo() { InitializeComponent(); - DataContext = new IPv4DemoViewMode(); - } -} - -public partial class IPv4DemoViewMode: ObservableObject -{ - [ObservableProperty] - private IPAddress? _address; - - public void ChangeAddress() - { - long l = Random.Shared.NextInt64(0x00000000FFFFFFFF); - Address = new IPAddress(l); } } \ No newline at end of file diff --git a/demo/Ursa.Demo/Pages/ImageViewerDemo.axaml b/demo/Ursa.Demo/Pages/ImageViewerDemo.axaml index d2f956f..48e6266 100644 --- a/demo/Ursa.Demo/Pages/ImageViewerDemo.axaml +++ b/demo/Ursa.Demo/Pages/ImageViewerDemo.axaml @@ -13,6 +13,10 @@ + diff --git a/src/Ursa/Controls/IPv4Box.cs b/src/Ursa/Controls/IPv4Box.cs index 228771f..a0c88b1 100644 --- a/src/Ursa/Controls/IPv4Box.cs +++ b/src/Ursa/Controls/IPv4Box.cs @@ -115,6 +115,19 @@ public class IPv4Box: TemplatedControl _presenters[1] = _secondText; _presenters[2] = _thirdText; _presenters[3] = _fourthText; + if (this.IPAddress != null) + { + var sections = IPAddress.ToString().Split('.'); + for (int i = 0; i < 4; i++) + { + var presenter = _presenters[i]; + if (presenter != null) + { + presenter.Text = sections[i]; + } + } + ParseBytes(ShowLeadingZero); + } } protected override void OnKeyDown(KeyEventArgs e) diff --git a/src/Ursa/Controls/ImageViewer/ImageViewer.cs b/src/Ursa/Controls/ImageViewer/ImageViewer.cs index 78a20e7..a3354db 100644 --- a/src/Ursa/Controls/ImageViewer/ImageViewer.cs +++ b/src/Ursa/Controls/ImageViewer/ImageViewer.cs @@ -3,6 +3,7 @@ using Avalonia.Controls; using Avalonia.Controls.Metadata; using Avalonia.Controls.Primitives; using Avalonia.Input; +using Avalonia.Interactivity; using Avalonia.Media; using Avalonia.Media.Imaging; @@ -149,6 +150,7 @@ public class ImageViewer: TemplatedControl private void OnSourceChanged(AvaloniaPropertyChangedEventArgs args) { + if(!IsLoaded) return; IImage image = args.GetNewValue(); Size size = image.Size; double width = this.Bounds.Width; @@ -184,7 +186,16 @@ public class ImageViewer: TemplatedControl base.OnApplyTemplate(e); _image = e.NameScope.Get(PART_Image); _layer = e.NameScope.Get(PART_Layer); - if (Source is { } i) + if (Overlayer is { } c) + { + AdornerLayer.SetAdorner(this, c); + } + } + + protected override void OnLoaded(RoutedEventArgs e) + { + base.OnLoaded(e); + if (Source is { } i && _image is { }) { Size size = i.Size; double width = Bounds.Width; @@ -193,14 +204,9 @@ public class ImageViewer: TemplatedControl _image.Height = size.Height; Scale = GetScaleRatio(width/size.Width, height/size.Height, this.Stretch); } - if (Overlayer is { } c) - { - AdornerLayer.SetAdorner(this, c); - } } - protected override void OnPointerWheelChanged(PointerWheelEventArgs e) { base.OnPointerWheelChanged(e);