我试图用两种方法显示am image:首先是当用户有完整的绝对路径时,如果他们没有它,并且如果图像作为blob对象存储在sqlite数据库中。 这是我的代码:
var modal = new Modal();
modal.HorizontalAlignment = HorizontalAlignment.Center;
modal.VerticalAlignment = VerticalAlignment.Center;
modal.Title = "View Image";
modal.ResizeMode = ResizeMode.CanResizeWithGrip;
Grid grid = new Grid();
RowDefinition row1 = new RowDefinition() {Height = GridLength.Auto};
grid.RowDefinitions.Add(row1);
if (!string.IsNullOrEmpty(ImageFileLocation))
{
Image i = new Image();
BitmapImage bi = new BitmapImage();
bi.BeginInit();
bi.UriSource = new Uri(ImageFileLocation, UriKind.Absolute);
bi.EndInit();
i.Source = bi;
//i.Height = 400;
//i.Width = 400;
i.MinHeight = 400;
i.MinWidth = 400;
i.Stretch = Stretch.Fill;
i.HorizontalAlignment = HorizontalAlignment.Stretch;
i.VerticalAlignment = VerticalAlignment.Stretch;
grid.Children.Add(i);
modal.ModalContentControl.Content = grid;
}
else if (ImageStore.ImageStoreId != null)
{
//TODO: Create Image object to display
MessageBox.Show(ImageStore.ImageStoreId.ToString());
}
modal.ShowDialog();
这是我的模态..它基本上是一个可以作为模态对话框重用的窗口。
<Window x:Class="Screens.Modal"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
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:local="clr-namespace:Screens"
mc:Ignorable="d"
Title="Modal" ResizeMode="NoResize"
SizeToContent="WidthAndHeight" x:Name="ModalWindow" WindowStartupLocation="CenterScreen">
<Grid>
<ContentControl x:Name="ModalContentControl" />
</Grid>
</Window>
上面代码中的所有内容都有效,除了一件事。当Modal与图像一起显示时,模态变得非常巨大,它几乎填满了我的两个显示器。我想用这个来实现两件事:
如果您认为不需要实现我想要的东西,请删除我对模态和/或图像对象的额外参数。
答案 0 :(得分:0)
避免在XAML标记中将模态窗口的SizeToContent
属性设置为WidthAndHeight
。保持其默认值Manual
。