UNO Windows 和 WASM 渲染不一致

问题描述 投票:0回答:1

Windows UI Desktop 和 WASM 之间的 UNO 跨平台应用程序中 xaml 的渲染方式存在差异。

这是 Windows UI 桌面渲染:

在 WASM 渲染中,时间选择器丢失了:

代码如下:

<ListView Name="scheduleList" ItemsSource="{x:Bind VM.Schedules}" SelectedItem="{x:Bind VM.SelectedSchedule}"
     Header="Scheduled Appearances:" SelectionMode="Single" >
    <ListView.ItemTemplate>
        <DataTemplate x:DataType="data:Schedule">
            <Grid Margin="4">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*"/>
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="Auto"/>
                </Grid.RowDefinitions>
                <StackPanel Orientation="Horizontal" Grid.Row="0">
                     <CalendarDatePicker x:Name="locDate"  Header="Location Date:"  HorizontalAlignment="Stretch"
                            PlaceholderText="Location Date" Date="{Binding LocationOffsetDate, Mode=TwoWay}" 
                             DateFormat = "{}{dayofweek.full},{month.full} {day.integer}, {year.full}"/>
                    <CheckBox x:Name="okToDelete" Content="Can Delete" IsChecked="{Binding Selected,Mode=TwoWay}"
                               Margin="10,0,0,0" FontSize="18"/>
                </StackPanel>

                <StackPanel Orientation="Horizontal" Grid.Row="1" >
                    <TimePicker x:Name="stTime" Header="Start Time" SelectedTime="{Binding StartTime, Mode=TwoWay}" MinuteIncrement="15"/>
                    <TimePicker x:Name="enTime" Header="End Time" SelectedTime="{Binding EndTime, Mode=TwoWay}" MinuteIncrement="15"/>
                </StackPanel>
            </Grid>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

在第二个示例中,Windows 在字段中显示数据:

但是在 WASM 中,数据丢失了:

代码如下所示:

<StackPanel Grid.Row="3" x:Name="editLocation" Margin="0,4" HorizontalAlignment="Stretch">
    <TextBlock x:Name="createNewLocation" Text="Define a new location" FontSize="18" Foreground="{StaticResource NavigatorBkgColor}"
               HorizontalAlignment="Center" />
    <controls:FTNTextBox Description="Location Name:"  IsRequired="true"
           InputValue="{x:Bind VM.SelectedLocationClone.Name, Mode=TwoWay}" />
    <controls:FTNTextBox Description="Location Address, include city:"  IsRequired="true"
           InputValue="{x:Bind VM.SelectedLocationClone.Address, Mode=TwoWay}" />
    <controls:FTNTextBox Description="Zip code"  IsRequired="true"
           InputValue="{x:Bind VM.SelectedLocationClone.Postal, Mode=TwoWay}" />
    <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
        <Button x:Name="addLocation" Content="Add Location" Margin="10,0,10,0"  
                Command="{x:Bind VM.InsertLocationCommand}"/>
        <Button x:Name="updateChanges" Content="Update Changes" Margin="10,0,5,0" 
                Command="{x:Bind VM.UpdateLocationCommand}"/>
        <Button x:Name="deleteLocation" Content="Delete Location" Margin="5,0,10,0" 
                Command="{x:Bind VM.DeleteLocationCommand}"/>
    </StackPanel>
</StackPanel>

FTNTextBox 看起来像:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
        <!-- This column takes all available horizontal space -->
        <ColumnDefinition Width="Auto" />
        <!-- This column adjusts to fit its content -->
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
<!-- Description Label -->

    <TextBlock Grid.Row="0" Grid.Column="0" x:Name="descriptionBlock" Text="{x:Bind Description}" 
            Style="{StaticResource FTN_TextBoxDescriptionStyle}" 
            VerticalAlignment="Bottom" HorizontalAlignment="Left"  />
    <TextBlock Grid.Row="0" Grid.Column="1" x:Name="requiredBlock" Text="*required" 
            Style="{StaticResource FTN_TextRquiredStyle}"
            VerticalAlignment="Bottom" HorizontalAlignment="Right" Margin="0,0,10,0" />             
    
    <!-- Input TextBox -->
    <TextBox Grid.Row="1" Grid.ColumnSpan="2" x:Name="inputTextBox" 
             TextChanged="OnTextChanged"  Text="{x:Bind InputValue, Mode=TwoWay}"
             Style="{StaticResource FTN_TextInputStyle}" Margin="10,0,10,10" />
</Grid>

我想看看是否有任何东西可以解决这些差异,但没有发现任何东西。 我将不胜感激对此的任何想法。我还没有找到让它发挥作用的方法。

xaml data-binding uwp-xaml webassembly uno
1个回答
0
投票

我认为有两个问题。显然 WASM 不支持 TimerPicker(至少我是这么认为的)。第二个问题具有约束力。我认为我的页面混合了 Binding 和 x:Bind 这一定引起了一些混乱。

© www.soinside.com 2019 - 2024. All rights reserved.