我一直在尝试创建一些BindableProperty到我的customView,我已经能够创建一个字符串和双一个,但我没有得到一个正确的角落半径。
public static readonly BindableProperty GeneralCornerRadiusProperty =
BindableProperty.Create(nameof(GeneralCornerRadius), typeof(CornerRadius), typeof(NumberChoseView), new CornerRadius(24));
public CornerRadius GeneralCornerRadius
{
get => (CornerRadius)GetValue(GeneralCornerRadiusProperty);
set => SetValue(GeneralCornerRadiusProperty, value);
}
<?xml version="1.0" encoding="utf-8" ?>
<Border xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="MauiAppTest.Templates.Views.NumberChoseView"
xmlns:local="clr-namespace:MauiAppTest.Templates.Views"
VerticalOptions="Center"
x:Name="self"
x:DataType="local:NumberChoseView"
BindingContext="{x:Reference self}">
<Border.StrokeShape>
<RoundRectangle CornerRadius="{Binding GeneralCornerRadius}" />
</Border.StrokeShape>
</Border>
在ContentPage中,它是这样使用的
<views:NumberChoseView GeneralFontSize="55"
Quantity="12"
GeneralCornerRadius="30">
</views:NumberChoseView>
型
我尝试了所有的CornerRadius格式。
1条答案
按热度按时间8ljdwjyq1#
更新
在GitHub上有一个已知的问题:Border does not change rendering when modifying StrokeShape properties。这意味着如果你为CornerRadius使用绑定并更改值,CornerRadius将不会反映更改。
这个问题现在在.NET8中得到了解决,我已经测试并确认了。
如果你只想设置一个值
GeneralCornerRadius="30"
,而不想对GeneralCornerRadius使用绑定,你可以试试我原来的帖子。否则,它在.NET8中是固定的,您可以尝试它。
原文
这就是绑定的问题。
对NumberChoseView进行一些更改:
1.删除以下两行:
字符串
2.使用x:CornerRadius的引用绑定表达式
型
所以NumberChoseView应该是这样的:
型
希望有帮助!