feat: fix oversize dialog.

This commit is contained in:
rabbitism
2024-05-12 18:57:44 +08:00
committed by Dong Bin
parent a96341498a
commit f453801f59
3 changed files with 20 additions and 0 deletions

View File

@@ -9,5 +9,6 @@
x:Class="Ursa.Demo.Dialogs.PlainDialog"> x:Class="Ursa.Demo.Dialogs.PlainDialog">
<StackPanel> <StackPanel>
<Calendar SelectedDate="{Binding Date}" ></Calendar> <Calendar SelectedDate="{Binding Date}" ></Calendar>
<TextBlock TextWrapping="Wrap" Text="{Binding Text}"></TextBlock>
</StackPanel> </StackPanel>
</UserControl> </UserControl>

View File

@@ -12,4 +12,17 @@ public class PlainDialogViewModel: ObservableObject
get => _date; get => _date;
set => SetProperty(ref _date, value); set => SetProperty(ref _date, value);
} }
private string? _text;
public string? Text
{
get => _text;
set => SetProperty(ref _text, value);
}
public PlainDialogViewModel()
{
Text =
"千古悠悠 有多少冤魂嗟叹 空怅望人寰无限 丛生哀怨 泣血蝇虫笑苍天 孤帆叠影锁白链 残月升骤起烈烈风 尽吹散 尽吹散 尽吹散 滂沱雨无底涧 涉激流登彼岸 奋力拨云间消得雾患 社稷安抚臣子心 长驱鬼魅不休战 看斜阳照大地阡陌 从头转";
}
} }

View File

@@ -22,6 +22,8 @@ public partial class OverlayDialogHost
SetTop(control, 0); SetTop(control, 0);
return; return;
} }
control.MaxWidth = newSize.Width;
control.MaxHeight = newSize.Height;
var width = newSize.Width - control.Bounds.Width; var width = newSize.Width - control.Bounds.Width;
var height = newSize.Height - control.Bounds.Height; var height = newSize.Height - control.Bounds.Height;
var newLeft = width * control.HorizontalOffsetRatio??0; var newLeft = width * control.HorizontalOffsetRatio??0;
@@ -97,6 +99,8 @@ public partial class OverlayDialogHost
control.Width = Bounds.Width; control.Width = Bounds.Width;
control.Height = Bounds.Height; control.Height = Bounds.Height;
} }
control.MaxWidth = Bounds.Width;
control.MaxHeight = Bounds.Height;
control.Measure(this.Bounds.Size); control.Measure(this.Bounds.Size);
control.Arrange(new Rect(control.DesiredSize)); control.Arrange(new Rect(control.DesiredSize));
SetToPosition(control); SetToPosition(control);
@@ -154,6 +158,8 @@ public partial class OverlayDialogHost
control.Width = Bounds.Width; control.Width = Bounds.Width;
control.Height = Bounds.Height; control.Height = Bounds.Height;
} }
control.MaxWidth = Bounds.Width;
control.MaxHeight = Bounds.Height;
control.Measure(this.Bounds.Size); control.Measure(this.Bounds.Size);
control.Arrange(new Rect(control.DesiredSize)); control.Arrange(new Rect(control.DesiredSize));
SetToPosition(control); SetToPosition(control);