C# 如何使图像使用它';s全宽,同时保持';Xamarin形式的正常高度是多少?
在使图像保持正常高度的同时,使其适合屏幕宽度存在很大问题。我从数据库中收集不同的图像(取决于您之前单击的内容),因此图像的高度/宽度始终不同。如何使图像始终填充屏幕宽度,同时保持正常高度 现在,一些图像填充宽度,同时保持正常高度,而一些图像不填充 我所尝试的:C# 如何使图像使用它';s全宽,同时保持';Xamarin形式的正常高度是多少?,c#,xaml,xamarin,xamarin.forms,C#,Xaml,Xamarin,Xamarin.forms,在使图像保持正常高度的同时,使其适合屏幕宽度存在很大问题。我从数据库中收集不同的图像(取决于您之前单击的内容),因此图像的高度/宽度始终不同。如何使图像始终填充屏幕宽度,同时保持正常高度 现在,一些图像填充宽度,同时保持正常高度,而一些图像不填充 我所尝试的: AspectFill裁剪出部分图像,因此此解决方案不起作用 Fill拉伸图像,这也不是一个好的解决方案 theimage.WidthRequest=App.ScreenWidth我也尝试过这样做来解决这个问题,我从AppDelegete获
AspectFill
裁剪出部分图像,因此此解决方案不起作用
Fill
拉伸图像,这也不是一个好的解决方案
theimage.WidthRequest=App.ScreenWidth
我也尝试过这样做来解决这个问题,我从AppDelegete获得了屏幕宽度,但是图像根本没有改变它的宽度
然后我还尝试添加一个grid.column,如下所示:
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition x:Name = "width"/>
</Grid.ColumnDefinitions>
<Image x:Name="theimage" Grid.Row="1" Grid.Column = "0" HorizontalOptions = "StartAndExpand" VerticalOptions = "StartAndExpand" />
width.Width = App.ScreenWidth;
但有些图像保持不变,无法填满屏幕宽度
我是否必须使用自定义渲染器才能成功地使图像填充屏幕宽度,同时保持正常高度
这是我当前的代码(我用上面的代码示例更改了一百万次):
我现在没有办法解决这个问题了。我必须做渲染器才能使它工作吗 最好的选择是让您学习如何使用MVVM。(虽然很难,但值得一试) 你能做的就是 查看
<Image Source="{Binding ImageSource,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged }" Width="100" Height="{Binding SourceImageHeight,Mode=OneWay,UpdateSourceTrigger=PropertyChanged}"></Image>
视图模型
public class YourViewModel
{
private String _imageSource = "";
public String ImageSource
{
get{return _imageSource;}
set{_imageSource = value;
NotifyPropertyChanged(m => m.ImageSource);
}
}
private Int _sourceImageHeight = 0;
public Int SourceImageHeight
{
get{return _sourceImageHeight ;}
set{_sourceImageHeight = value;
NotifyPropertyChanged(m => m.SourceImageHeight);
}
}
}
从这里你要做的就是
ImageSource = ImageLocation
及
注意:在Viewmodel中,如果不使用私有变量(\u imageSource/\u sourceImageHeight),而是在setter中使用公共变量名(imageSource/sourceImageHeight),则将创建一个无限循环。确定。我会调查的!谢谢如果你知道怎么做,我将非常感谢一些更多的代码,以便看到一个完整的solution@UnoDosCode我又添加了一点:)我找不到使用System.ComponentModel添加的
NotifyPropertyChanged
代码>但是我可以在线找到INotifyPropertyChangedNotifyPropertyChanged是Nuget包SimpleMVVM的一部分。它使代码更干净。好的,添加MvvmLight!我需要键入什么才能将其添加到我的页面<代码>使用
public class YourViewModel
{
private String _imageSource = "";
public String ImageSource
{
get{return _imageSource;}
set{_imageSource = value;
NotifyPropertyChanged(m => m.ImageSource);
}
}
private Int _sourceImageHeight = 0;
public Int SourceImageHeight
{
get{return _sourceImageHeight ;}
set{_sourceImageHeight = value;
NotifyPropertyChanged(m => m.SourceImageHeight);
}
}
}
ImageSource = ImageLocation
SourceImageHeight = 1200