【问题标题】:Why doesn't hide my SideMenuView in xamarin forms为什么不在 xamarin 表单中隐藏我的 SideMenuView
【发布时间】:2021-06-10 02:42:11
【问题描述】:

我设计了如果用户点击 listviewitem,sidemenu 会加载并显示一些数据

但我有一些问题是侧边菜单没有隐藏

你可以看到上面第一个截图侧边菜单没有隐藏,如果我点击列表视图项,侧边菜单会改变第二个截图

<ContentPage.Content>
       <xct:SideMenuView State="{Binding SideMenuState}" xct:SideMenuView.MenuGestureEnabled="False" xct:SideMenuView.Position="MainView"> 
        <ListView x:Name="lvMonitoring" SeparatorVisibility="None" HasUnevenRows="True" Margin="0, 5, 0, 0"
              SelectedItem="{Binding SelectedChannel}" ItemsSource="{Binding TargetChannelList}">
            <ListView.ItemTemplate>
                <DataTemplate x:DataType="model:Channel">
                    <ViewCell>
                        <Frame CornerRadius="5" Margin="4" HasShadow="True" Padding="0">
                            <Grid BackgroundColor="{Binding Status, Converter={StaticResource Key=StatusToColorConverter}}" HeightRequest="60">
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="0.6*"/>
                                    <ColumnDefinition Width="0.4*"/>
                                </Grid.ColumnDefinitions>
                                <Grid Grid.Column="0" HorizontalOptions="Start" VerticalOptions="Center" Margin="10, 0, 0, 0">
                                    <StackLayout>
                                        <Label Text="{Binding DisplayName}" Style="{StaticResource DefaultLabel}"/>
                                    </StackLayout>
                                </Grid>
                                <Grid Grid.Column="1" Margin="0, 0, 15, 0" HorizontalOptions="End" VerticalOptions="Center">
                                    <Label Text="{Binding Status, Converter={StaticResource Key=StatusToTextConverter}}" />
                                </Grid>
                            </Grid>
                        </Frame>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
        
        <xct:TabView  xct:SideMenuView.Position="RightMenu"
            xct:SideMenuView.MenuWidthPercentage=".7">
            <xct:TabViewItem Text="">
                <Button Text=""/>
            </xct:TabViewItem>
            <xct:TabViewItem Text="">
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="0.1*"/>
                        <RowDefinition Height="0.9*"/>
                    </Grid.RowDefinitions>
                    <Grid Grid.Row="0">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="0.4*"/>
                            <ColumnDefinition Width="0.4*"/>
                            <ColumnDefinition Width="0.2*"/>
                        </Grid.ColumnDefinitions>
                    </Grid>
                    <ListView Grid.Row="1" ItemsSource="{Binding NotificationHistoryList}">
                        <ListView.ItemTemplate>
                            <DataTemplate x:DataType="model:NotificationHistory">
                                <ViewCell>
                                    <Frame HasShadow="True" CornerRadius="4" Margin="4" Padding="0">
                                        <Grid>
                                            <Grid.ColumnDefinitions>
                                                <ColumnDefinition Width="0.4*"/>
                                                <ColumnDefinition Width="0.4*"/>
                                                <ColumnDefinition Width="0.2*"/>
                                            </Grid.ColumnDefinitions>
                                            <Label Grid.Column="0" Text="{Binding DetailLocation}" Style="{StaticResource DefaultLabel}"/>
                                            <Label Grid.Column="1" Text="{Binding NotificationReceivedDateTime, StringFormat='{MM월-dd일 HH시 mm분 ss초}'}" Style="{StaticResource DefaultLabel}"/>
                                            <Label Grid.Column="2" Text="{Binding NotificationStatus, Converter={StaticResource Key=StatusToTextConverter}}" 
                                                   TextColor="{Binding NotificationStatus, Converter={StaticResource Key=StatusToColorConverter}}"/>
                                        </Grid>
                                    </Frame>
                                </ViewCell>
                            </DataTemplate>
                        </ListView.ItemTemplate>
                    </ListView>
                </Grid>
            </xct:TabViewItem>
        </xct:TabView>
    </xct:SideMenuView>
</ContentPage.Content>

以上代码是我的 xaml 代码,我想知道解决方案。 如果我忘记设置属性或设置,请告诉我

复制回购:https://github.com/Sunday5214/XamarinXAMLExamples

【问题讨论】:

标签: c# xaml xamarin.forms xamarin-community-toolkit


【解决方案1】:

最好初始化状态属性:

private SideMenuState state = SideMenuState.MainViewShown;

在应用启动期间,SelectedItem 的 setter 被空值命中,因此最好进行检查以避免将 State 属性设置为 SideMenuState.RightMenuShown

    public string SelectedItem
        {
            get => selectedItem;
            set
            {
                SetProperty(ref selectedItem, value);
                if (value != null)
                {
                    State = SideMenuState.RightMenuShown;
                }
            }
        }

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-02
  • 1970-01-01
  • 2014-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多