我有圆形按钮,并试图改变他们的大小取决于他们是在电话或平板电脑使用AbsolutLayout。
这是我的xaml:
<Frame BackgroundColor="{StaticResource ThemeColor}" Padding="0" CornerRadius="40" AbsoluteLayout.LayoutBounds="{StaticResource HomeCircle}" AbsoluteLayout.LayoutFlags="PositionProportional">
<Label Text="" HorizontalOptions="Center" VerticalOptions="Center" Style="{StaticResource Icon}" TextColor="{StaticResource LabelColor}"/>
<Frame.GestureRecognizers>
<TapGestureRecognizer Tapped="Directions"/>
</Frame.GestureRecognizers>
</Frame>
<AbsoluteLayout.Resources>
<ResourceDictionary>
<OnIdiom x:Key="HomeCircle" x:TypeArguments="Frame" Phone=".85,.375, 80, 80"
Tablet=".85,.375, 120, 120"/>
</ResourceDictionary>
</AbsoluteLayout.Resources>我看了一下这个资源,但它没有用:
编辑:尝试了矩形、AbsoluteLayout和框架的AbsoluteLayout,它们都给出了这个错误:
XFC0009 XFC0009没有为"Phone“找到属性、BindableProperty或事件,或者值和属性之间的类型不匹配。
编辑:还查看了这个线程,它提供了相同的错误:
https://xamarin.github.io/bugzilla-archives/55/55183/bug.html
发布于 2021-01-19 09:20:17
我过去也遇到过同样的问题。我的解决方案是通过绑定来设置AbsoluteLayout边界,而不是StaticResource。
在ViewModel中:
public Xamarin.Forms.Rectangle HomeCircle => Xamarin.Forms.Device.Idiom == TargetIdiom.Phone ? new Xamarin.Forms.Rectangle(0.5f, 0.5f, 80, 80) : new Xamarin.Forms.Rectangle(0.5f, 0.5f, 120, 120);在yaml中:
<AbsoluteLayout>
<Frame BackgroundColor="Gray"
Padding="0"
CornerRadius="40"
AbsoluteLayout.LayoutBounds="{Binding HomeCircle}"
AbsoluteLayout.LayoutFlags="PositionProportional">
<Label Text="TEST"
HorizontalOptions="Center"
VerticalOptions="Center"
TextColor="Black"/>
<Frame.GestureRecognizers>
<TapGestureRecognizer Command="{Binding DoSomething}"/>
</Frame.GestureRecognizers>
</Frame>
</AbsoluteLayout>无论如何,AbsoluteLayout.LayoutBounds需要矩形,而且标记并不总是允许所有的内容:)
https://stackoverflow.com/questions/65782295
复制相似问题