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);