【问题标题】:How to Use Microsoft XAML Border on Xamarin Forms如何在 Xamarin 表单上使用 Microsoft XAML 边框
【发布时间】:2016-04-10 00:30:59
【问题描述】:

我想知道 Xamarin Forms 的 XAML windows phone“边界”是什么?没有使用 BorderThickness 的边框,我想画一些“线条”并设置在 5 行内。谢谢

XAML Windows 电话:

<Border Grid.Row="0" BorderThickness="0,0,0,2" BorderBrush="#fe98fe"/>

我在 xamarin 上找到了一个 Frame,它的作用与 Border 几乎相同,但对我来说看起来不太好!

【问题讨论】:

    标签: xaml xamarin xamarin.forms


    【解决方案1】:

    如果你只是想画一条线,你可以使用BoxViewhttps://developer.xamarin.com/api/type/Xamarin.Forms.BoxView/

    高度为 2 的水平线示例:

    <BoxView Color="Red" HeightRequest="2" HorizontalOptions="FillAndExpand"></BoxView>
    

    但目前Border 没有功能完整的对应物。

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
            <RowDefinition Height="*"/>
            <RowDefinition Height="*"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <BoxView Grid.Row="0" BackgroundColor="Red" HeightRequest="2" VerticalOptions="End" HorizontalOptions="FillAndExpand"></BoxView>
        <BoxView Grid.Row="1" BackgroundColor="Red" HeightRequest="2" VerticalOptions="End"  HorizontalOptions="FillAndExpand"></BoxView>
        <BoxView Grid.Row="2" BackgroundColor="Red" HeightRequest="2" VerticalOptions="End"  HorizontalOptions="FillAndExpand"></BoxView>
        <BoxView Grid.Row="3" BackgroundColor="Red" HeightRequest="2" VerticalOptions="End"  HorizontalOptions="FillAndExpand"></BoxView>
    </Grid>
    

    【讨论】:

    • 我确实使用了BoxView,但是当我放入我的RowDefinition 时,我得到了一个大矩形here
    • 你设置HeightRequest="2"了吗?如果是:您的 XAML 看起来如何?
    • 我找到了这样做的解决方案&lt;BoxView Color="Red" HeightRequest="2" WidthRequest="1" Grid.Row="0" Rotation="-90" HorizontalOptions="Fill"/&gt; 但是,当我在 RowDefinition 内部使用时变小了!我们可以聊天吗?
    • 这是我的行 &lt;Grid.RowDefinitions&gt; &lt;RowDefinition Height="*"/&gt; &lt;RowDefinition Height="*"/&gt; &lt;RowDefinition Height="*"/&gt; &lt;RowDefinition Height="*"/&gt; &lt;RowDefinition Height="*"/&gt; &lt;/Grid.RowDefinitions&gt;
    • 使用&lt;RowDefinition Height="Auto"/&gt;&lt;RowDefinition Height="2"/&gt; 表示行。
    【解决方案2】:

    我不会像接受的答案建议的那样做。

    最好的办法(恕我直言)是使用 Frame 或 Grid/StackLayout/AnyContainerHere。

    这就是我要做的事情

    <Grid BackgroundColor="YourBorderColorHere" Padding="YourBorderWidthValueWhichIsNotOfTypeThickness">
        <YourContentHere [BackgroundColor="YourInnerBackgroundHere"]/>        
        <!-- If you don't have a content to set, use a BoxView with a different color (your background color)-->
    </Grid>
    

    这将通过更少的控制、更少的渲染内容来实现相同的效果,从而获得更好的性能。 如果你想要圆角半径,用 Frame 做同样的事情。

    如果作者不喜欢 Frame 的外观,他应该尝试在 Frame 上将 CornerRadius 设置为 0 并将 HasShadow 设置为 False。

    渲染的控制和内容越少越好! 我喜欢引用范德罗的话:“少即是多”

    如果您只想画一条线(粗细 = 0,0,0,2 的边框),请使用 BoxView。

    【讨论】:

    • 有点遗憾,不支持 控件。这是一个基本元素。
    • @NickeManarin 边框几乎 == 边框(这是一个高级边框)。但是你是对的,他们应该提供一个更轻的控件来为任何控件添加边框,比如 Label 或其他任何东西。
    猜你喜欢
    • 2017-02-08
    • 1970-01-01
    • 2020-04-01
    • 1970-01-01
    • 2017-06-28
    • 2017-05-06
    • 2017-04-28
    • 2019-04-05
    • 2023-03-04
    相关资源
    最近更新 更多