首页 > 解决方案 > UWP NumberBox 自定义值模板

问题描述

我想要一个如下图所示的数字框,用户可以在其中始终看到最大值[在我的项目中,最小值始终为 1,不需要显示],这可能吗?我该怎么做?

在此处输入图像描述

<muxc:NumberBox Name="NumberBoxSpinButtonPlacementExample"
                Header="Page"
                Value="12" Minimum="1" Maximum="128"
                SpinButtonPlacementMode="Compact"
                SmallChange="1" LargeChange="10"
                Width="100"
                VerticalAlignment="Center" HorizontalAlignment="Center"/>

我在这个链接[ WinUI NumberBox Control ]中找到了下面的代码,我想我应该用这个方法,也许不是,我不知道

private DecimalFormatter DutchDecimalFormatter { get; } = 
    new DecimalFormatter(new[] { "nl-NL" }, "NL") 
{
        IsGrouped = true,
        FractionDigits = 2,
        NumberRounder = new IncrementNumberRounder {
            Increment = 0.01,
            RoundingAlgorithm = RoundingAlgorithm.RoundHalfUp,
        }
};

结果 :

<RelativePanel VerticalAlignment="Center" HorizontalAlignment="Center">
    <muxc:NumberBox x:Name="nb1"
                        Header="صفحات" 
                        Value="604" Minimum="1" Maximum="604"
                        SpinButtonPlacementMode="Compact"
                        SmallChange="1" LargeChange="10"                                                                      
                        Width="100"/>
    <Grid RelativePanel.AlignRightWith="nb1" Margin="0,24,30,0" Height="30" Background="#FF666666">
        <TextBlock Name="nb1MaxValue" Text="604" 
                   Foreground="White"
                   Padding="5,0"
                   VerticalAlignment="Center" HorizontalAlignment="Center"/>
    </Grid>
</RelativePanel>

在此处输入图像描述

但是为什么一个数字是英文格式而另一个是波斯语格式!O_O

标签: c#uwp

解决方案


NumberBox 表示可用于显示和编辑数字的控件。

在您的场景中,可以使用数字格式化来格式化 Numberbox 的值,其结果仍然是数字,而不是 12/128 之类的表达式。

我建议您可以编写一个 TextBlock 来通过RelativePanel覆盖 NumberBox,如下所示。

<Page
……
xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid>
    <RelativePanel BorderBrush="Red" BorderThickness="2" CornerRadius="10" Padding="12">
        <muxc:NumberBox   x:Name="MyNumberBox"
            Header="Page" Value="15"
            Minimum="1" Maximum="128"
            SpinButtonPlacementMode="Compact"
            SmallChange="1" LargeChange="10"                                                                      
            Width="150"
            VerticalAlignment="Center" 
            HorizontalAlignment="Center" d:IsHidden="True"/>
        <TextBlock x:Name="MyTextBlock" Text="/128" Margin="50,-30,0,0" RelativePanel.Below="MyNumberBox"/>
    </RelativePanel>
</Grid> 
</Page>

结果:

在此处输入图像描述


推荐阅读