uwp-xaml 相关问题

此标记用于Windows 10上Windows-Store-Apps特有的XAML UI框架,是通用Windows平台(UWP)的一部分。

WinUI3:如何在视图模型中引用控件?

我正在使用 TemplateStudio 来构建我的项目 在视图 > TestPage.xaml 中 我正在使用 TemplateStudio 来构建我的项目 在 视图 > TestPage.xaml <Page x:Class="FluentQQ.Views.TestPage" ...> <Grid> <TextBox x:Name="MessageInput" /> </Grid> </Page> 并在视图> TestPage.xaml.cs using FluentQQ.ViewModels; using Microsoft.UI.Xaml.Controls; namespace FluentQQ.Views; public sealed partial class TestPage : Page { public TestViewModel ViewModel { get; } public TestPage() { ViewModel = App.GetService<TestViewModel>(); InitializeComponent(); } } 然后,我尝试获取TextBox“MessageInput”的内容 因此,在 ViewModels > TestViewModel.cs 中,我使用 MessageInput.Text 但是没用 CS0103 The name 'MessageInput' does not exist in the current context 我知道这个问题可能很简单,但请原谅我只是初学者 如错误消息所示,MessageInput控件不存在于*TestPageViewModel中。对于 MVVM,通常您应该使用绑定从视图中获取数据。 只是为了确保我们在同一页面上,在这种情况下: TestPage.xaml 是 View TestPage.xaml.cs 是 代码隐藏 TestPageViewModel.cs 是 ViewModel 安装 CommunityToolkit.Mvvm nuget 包。如果您使用 MVVM 模式,这将使您的生活更轻松。 在您的 ViewModel 中,TestPageViewModel: // This class needs to be "partial" // for the "CommunityToolkit.Mvvm" source generators. public partial class TestPageViewModel : ObservableObject { // The source generators will create // an UI interactable "SomeText" property for you. [ObservableProperty] private string someText; } 在您的代码隐藏中,TestPage.xaml.cs: public sealed partial class TestPage : Page { public TestViewModel ViewModel { get; } public TestPage() { ViewModel = App.GetService<TestViewModel>(); InitializeComponent(); } } 然后在您看来,TestPage.xaml: <TextBox x:Name="MessageInput" Text="{x:Bind ViewModel.SomeText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" /> 仅此而已。每次您更改 TextBox 中的文本时,SomeText 都会更新。 顺便说一句,您可以直接从代码隐藏访问TextBox。只要确保使用 x:Name 来命名即可。 TestPage.xaml.cs MessageInput.Text = "some text";

回答 1 投票 0

如何在 UWP 中删除自动焦点变化

我正在实现一个用户控件,它有一个网格,其中又包含一个带有按钮、文本块等的网格(比如说sampleGridItem)。sampleGridItem 用后面的代码中的列表填充。 我的目标是

回答 1 投票 0

如何在UWP应用程序中制作开始菜单磁贴系统

我想为我的 UWP 应用制作一个类似 Windows 10 的 Tile 系统。 这是示例: 瓷砖系统。 我想要有组(例如开始菜单中的“代码”组), 和带有图像和技术的瓷砖...

回答 1 投票 0

在 UWP 中的框架旁边放置网格

我正在编写一个 UWP 应用程序。我想在框架旁边放置一个网格。 这是 MainPage.XAML: 我正在编写一个 UWP 应用程序。我想在框架旁边放置一个网格。 这是 MainPage.XAML: <Page x:Class="Project_NewSpartan.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:Project_NewSpartan" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <Grid> <!-- Define rows for the layout --> <Grid.RowDefinitions> <!-- First row for the AppTitleBar --> <RowDefinition Height="Auto"/> <!-- Second row for the NavigationFrame --> <RowDefinition Height="Auto"/> <!-- Second row for the Frame content --> <RowDefinition Height="*"/> </Grid.RowDefinitions> <!-- AppTitleBar placed in the first row --> <Frame x:Name="TitlebarFrame" Grid.Row="0"/> <!-- NavigationRailFrame placed in the second row --> <Frame x:Name="NavigationFrame" Grid.Row="1"/> <!-- Main content placed in the third row --> <Frame x:Name="MainFrame" Grid.Row="2" HorizontalAlignment="Stretch"/> <Grid Grid.Row="2" MaxWidth="200" HorizontalAlignment="Right" Background="Red"></Grid> </Grid> </Page> 所以,我想要的是这样的: |标题栏框架| |导航框架| |WebView |网格 | 所以我希望 webview 在网格采用 200 宽度后自动占用可用空间。我怎样才能做到这一点? 请帮助我:,( Gerry Schmitz 找到了答案:将 MinWidth 设置为 200

回答 1 投票 0

Bin 文件夹中的 Win32 异常

是否必须有一些特殊的东西才能运行在 Bin 文件夹中输出的 .exe?当尝试以管理员身份运行 .exe 时,它只会崩溃并出现未处理的 win32 异常。

回答 1 投票 0

如何正确地使用新属性扩展XAML控件?

我有一个新的哲学问题,旨在强调旧的 WPF 模式和新的 UWP 模式之间的差异。 我想使用新属性扩展标准控件(例如按钮),...

回答 3 投票 0

UWP自定义虚拟化列表视图

我正在尝试通过虚拟化重新创建一个列表视图,以更深入地了解列表视图的工作原理。为此,我正在创建一个自定义面板。当列表视图项目垂直排列时我需要...

回答 1 投票 0

无法为 UWP 应用程序安装 Google.FlatBuffers Nuget 包

我在为 UWP 应用程序安装 FlatBuffers 包时遇到以下错误 NU1202:软件包 Google.FlatBuffers 24.3.25 与 uap10.0.17763 (UAP,版本=v10.0.17763) / win10-x86 不兼容。帕克...

回答 1 投票 0

如何使用蓝牙广告发布器发布超过 31 字节的广告

我正在开发一个用于测试目的的传感器模拟器。我想要模拟的传感器是 BlueMaestro 湿度和温度传感器。 我需要广告 57 字节,但我目前无法...

回答 1 投票 0

如何对嵌套在 MenuFlyout 中的 ListView 中的项目使用键盘导航?

我有一个按钮,按下时会打开 MenuFlyout。 MenuFlyout 有几个自定义 MenuFlyoutItems:一个具有嵌套的 StackPanel,一个具有绑定的 Command,以及一个可操作的 ListView...

回答 1 投票 0

弹出窗口打开时滚动内容

带有两个控件的简单页面,Button 和 GridView。按钮打开带有其他几个按钮的弹出窗口。 Gridview有一个大约100个元素的列表,所以有滚动。如果按钮的弹出按钮是...

回答 1 投票 0

在 XAML 中向 MenuFlyoutItem 添加图标

我正在尝试向 MenuFlyoutItem 添加一个图标。我有以下项目结构: 项目 -资源 - 图片 ---图片.png - 景观 --视图.xaml XAML如下: 我正在尝试向 MenuFlyoutItem 添加一个图标。我有以下项目结构: 项目 -资源 --图片 ---图片.png -观点 --查看.xaml XAML如下: <MenuFlyoutItem Command="{x:Bind ViewModel.SomeCommand}" Style="{StaticResource SomeStyle}" Width="Auto"> <MenuFlyoutItem.Icon> <BitmapIcon UriSource="/Resources/Images/image.png"/> </MenuFlyoutItem.Icon> </MenuFlyoutItem> 但我在菜单项中没有看到该图标。 我期待有这样的事情: 我尝试将图像控件添加到视图中并指定“/Resources/Images/image.png”作为图像源,只是为了检查是否可以访问该 image.png 文件,在本例中是我的图像显示没有问题。 请帮助我,我对 MenuFlyoutItem 做错了什么? 谢谢。 1.请检查文件夹中是否有image.png /Resources/Images/ 2.请在解决方案资源管理器中右键单击 image.png,选择属性。 在“属性”窗口中,检查 Build Action 是否为内容。

回答 1 投票 0

关闭文本框的拼写检查

我想创建一个当用户使用软件键盘时不进行拼写检查的文本框。我已经尝试过这个: 我想创建一个当用户使用软件键盘时不进行拼写检查的文本框。我试过这个: <TextBox HorizontalAlignment="Stretch" IsSpellCheckEnabled="False" IsTextPredictionEnabled="False" /> 但不知何故,拼写检查仍然出现在软件键盘中。有什么建议吗? 您可以在 WinUI 中使用 IsSpellCheckEnabled 属性: <TextBox PlaceholderText="Benutzername" x:Name="tbUser" IsSpellCheckEnabled="False" />

回答 1 投票 0

UWP:在按钮单击事件上取消选中 ListView 内的复选框

我正在尝试清除弹出窗口=>按钮单击事件上的ListView中选定的复选框。 我尝试过循环 listview 并将属性设置为 false 但它不起作用。 我正在尝试清除弹出窗口中选定的复选框=>按钮单击事件上的ListView。 我尝试过循环列表视图并将属性设置为 false,但它不起作用。 <Page x:Class="UC.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:UC" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" xmlns:mvsc="using:UC.Models" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <Grid> <StackPanel> <Button x:Name="btn_Add" Content="Add" Margin="420,10,10,0" Click="Btn_Add_Click"/> </StackPanel> <StackPanel Margin="10,50,10,0"> <TextBlock Text="Selected List" Margin="10" HorizontalAlignment="Left" VerticalAlignment="Top" /> <Border BorderBrush="{StaticResource ApplicationForegroundThemeBrush}" Background="{StaticResource ApplicationPageBackgroundThemeBrush}" BorderThickness="1" Margin="10,0,800,5" Height="300"> <ListView x:Name="lstViewSelectedData" ScrollViewer.VerticalScrollBarVisibility="Auto" ScrollViewer.VerticalScrollMode="Enabled"> <ListView.ItemTemplate> <DataTemplate x:DataType="mvsc:SelectedDataModel"> <StackPanel Orientation="Horizontal"> <TextBlock VerticalAlignment="Center" x:Name="txtSelectedData" Text="{x:Bind Message}"></TextBlock> <AppBarButton VerticalAlignment="Bottom" Click="AppBarButton_Click" Icon="Delete" Tag="{x:Bind Id, Mode=OneWay}" > </AppBarButton> </StackPanel> </DataTemplate> </ListView.ItemTemplate> </ListView> </Border> </StackPanel> <Popup x:Name="popup1" VerticalOffset="10" HorizontalOffset="450" IsLightDismissEnabled="True" HorizontalAlignment="Stretch" Margin="50" VerticalAlignment="Stretch"> <Border BorderBrush="{StaticResource ApplicationForegroundThemeBrush}" Background="{StaticResource ApplicationPageBackgroundThemeBrush}" BorderThickness="1" Width="450" Height="400" > <StackPanel x:Name="stkpnl1" Orientation="Vertical"> <TextBox x:Name="txtSearch" Header="Filter" Margin="10" PlaceholderText="Search list" TextChanging="TxtSearch_TextChanging" /> <ListView x:Name="lstView" Margin="30" Height="200" ScrollViewer.VerticalScrollBarVisibility="Auto" ScrollViewer.VerticalScrollMode="Enabled"> <ListView.ItemTemplate > <DataTemplate x:DataType="mvsc:SelectedDataModel" > <CheckBox x:Name="chkBox" FlowDirection="LeftToRight" Tag="{x:Bind Id, Mode=TwoWay}" Content="{x:Bind Message, Mode=TwoWay}" IsChecked="{x:Bind IsFavorite,Mode=TwoWay}" Checked="ChkBox_Checked" Unchecked="ChkBox_Unchecked" IsHitTestVisible="True"/> </DataTemplate> </ListView.ItemTemplate> </ListView> <StackPanel Orientation="Horizontal" Grid.Row="2" Grid.Column="1" FlowDirection="LeftToRight" > <Button x:Name="btnAdd" Content="Select" Click="BtnAdd_Click" Margin="10" /> <Button x:Name="btnCancel" Content="Close" Click="BtnCancel_Click"/> </StackPanel> </StackPanel> </Border> </Popup> </Grid> </Page> public sealed partial class MainPage : Page { public SelectedDataModel SelectedData { get { return (SelectedDataModel)GetValue(SelectedDataProperty); } set { SetValue(SelectedDataProperty, value); } } // Using a DependencyProperty as the backing store for MyProperty. This enables animation, styling, binding, etc... public static readonly DependencyProperty SelectedDataProperty = DependencyProperty.Register("SelectedData", typeof(int), typeof(SelectedDataModel), null); public AllDataModel AllDataList { get { return (AllDataModel)GetValue(AllDataListProperty); } set { SetValue(AllDataListProperty, value); } } // Using a DependencyProperty as the backing store for MyProperty. This enables animation, styling, binding, etc... public static readonly DependencyProperty AllDataListProperty = DependencyProperty.Register("AllDataList", typeof(int), typeof(AllDataModel), null); List<SelectedDataModel> listData = new List<SelectedDataModel>(); List<SelectedDataModel> temp = new List<SelectedDataModel>(); List<SelectedDataModel> temp1 = new List<SelectedDataModel>(); List<SelectedDataModel> selectedData = new List<SelectedDataModel>(); public MainPage() { this.InitializeComponent(); lstView.ItemsSource = GetData(); //lstViewSelectedData.ItemsSource = GetSelectedData(); temp = listData; } public List<SelectedDataModel> GetData() { listData.Add(new SelectedDataModel { Id = 1, Message = "One" }); listData.Add(new SelectedDataModel { Id = 2, Message = "Two" }); listData.Add(new SelectedDataModel { Id = 3, Message = "Three" }); listData.Add(new SelectedDataModel { Id = 4, Message = "Four" }); listData.Add(new SelectedDataModel { Id = 5, Message = "Five" }); listData.Add(new SelectedDataModel { Id = 6, Message = "Six" }); listData.Add(new SelectedDataModel { Id = 7, Message = "Seven" }); listData.Add(new SelectedDataModel { Id = 8, Message = "Eight" }); return listData; } private async void BtnAdd_Click(object sender, RoutedEventArgs e) { if (selectedData.Count == 0) { ContentDialog dialog = new ContentDialog(); dialog.Title = "Not Selected"; dialog.Content = "Please Select Atlease One Entry"; dialog.CloseButtonText = "Close"; await dialog.ShowAsync(); } else { lstViewSelectedData.ItemsSource = null; var dt = selectedData; lstViewSelectedData.ItemsSource = dt; //this.selectedData.ForEach(x => x.IsFavorite = false); //this.listData.ForEach(x => x.IsFavorite = false); //temp1 = dt; popup1.IsOpen = false; //foreach (SelectedDataModel row in lstView.Items.ToList()) //{ // //CheckBox box = row.FindName("chkSelect") as CheckBox; // if (row.IsFavorite == true) // { // row.IsFavorite = false; // // listData.Remove(listData.First(X => X.Id == row.Id)); // //Logic to delete the row // } //} for (int i = 0; i < lstView.Items.Count; i++) { ListViewItem lvi = (ListViewItem)lstView.ItemContainerGenerator.ContainerFromItem(lstView.Items[i]); if (lvi != null) { //CheckBox c = lvi.FindChildByType<CheckBox>(); //c.IsChecked = true; } } } } private void TxtSearch_TextChanging(TextBox sender, TextBoxTextChangingEventArgs args) { listData = temp; if (!string.IsNullOrEmpty(txtSearch.Text)) { listData = listData.Where(x => x.Message.ToUpper().Contains(txtSearch.Text.ToUpper())).ToList(); if (listData.Count > 0) { lstView.ItemsSource = listData; } else { lstView.ItemsSource = temp; } } else { lstView.ItemsSource = temp; } } private void ChkBox_Checked(object sender, RoutedEventArgs e) { var chkBox = sender as CheckBox; //throwing an exception System.NullReferenceException: 'Object reference not set to an instance of an object.' selectedData.Add(listData.First(x => x.Id == int.Parse(chkBox.Tag.ToString()))); // listData.Remove(listData.First(X => X.Id == int.Parse(chkBox.Tag.ToString()))); //selectedData.Clear(); } private void ChkBox_Unchecked(object sender, RoutedEventArgs e) { var chkBox = sender as CheckBox; selectedData.Remove(listData.First(X => X.Id == int.Parse(chkBox.Tag.ToString()))); } private void BtnAddData_Click(object sender, RoutedEventArgs e) { //popup2.IsOpen = false; popup1.IsOpen = true; } private void BtnCancel_Click(object sender, RoutedEventArgs e) { popup1.IsOpen = false; } private void Btn_Add_Click(object sender, RoutedEventArgs e) { popup1.IsOpen = true; } private async void AppBarButton_Click(object sender, RoutedEventArgs e) { AppBarButton delButton = sender as AppBarButton; ContentDialog dialog = new ContentDialog(); dialog.Content = "Do You Want To Remove..?"; dialog.PrimaryButtonText = "Yes"; dialog.SecondaryButtonText = "No"; dialog.Title = "Remove"; ContentDialogResult result = await dialog.ShowAsync(); if (result == ContentDialogResult.Primary) { //var isRemoved = temp.Remove(listData.First(x => x.id == int.Parse(delButton.Tag.ToString()))); //List<Info> temp1 = new List<Info>(); //foreach (var item in temp) //{ // temp1.Add(item); //} //lstViewSelectedData.ItemsSource = temp1; var temp2 = selectedData; temp2.Remove(temp1.First(x => x.Id == int.Parse(delButton.Tag.ToString()))); lstViewSelectedData.ItemsSource = null; lstViewSelectedData.ItemsSource = temp2; } } } 我只想清除按钮单击事件 UWP 上列表视图内的选中项目。 我尝试过循环列表视图并将属性设置为 false,但它不起作用。 您的复选框绑定到 IsFavorite 属性。因此,如果您想取消选中它,只需更新 IsFavorite 属性的值即可。要在属性值更改时更新 UI,您的 SelectedDataModel 类需要实现 INotifyPropertyChanged Interface。 public class SelectedDataModel : INotifyPropertyChanged { private int _Id; public int Id { get { return _Id; } set { if (_Id != value) { _Id = value; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Id")); } } } private string _Message; public string Message { get { return _Message; } set { if (_Message != value) { _Message = value; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Message")); } } } private bool _IsFavorite; public bool IsFavorite { get { return _IsFavorite; } set { if (_IsFavorite != value) { _IsFavorite = value; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("IsFavorite")); } } } public event PropertyChangedEventHandler PropertyChanged; } 然后,在按钮单击事件处理程序中,您只需将listData中每个项目的 IsFavorite 更改为 false。 foreach (var item in listData) { item.IsFavorite = false; }

回答 1 投票 0

将 ToggleSwitch 设置为开或关

我有 3 个切换开关,分别名为 onlineToggle、offlineToggle 和 maxToggle。 XAML: 我有 3 个切换开关,分别名为 onlineToggle、offlineToggle 和 maxToggle。 XAML: <ToggleSwitch x:Name="onlineToggleSwitch" VerticalAlignment="Center" FlowDirection="LeftToRight" OffContent="" OnContent="" PointerReleased="onlineToggleSwitch_PointerReleased"> </ToggleSwitch> <ToggleSwitch x:Name="offlineToggleSwitch" VerticalAlignment="Center" FlowDirection="LeftToRight" OffContent="" OnContent="" PointerReleased="offlineToggleSwitch_PointerReleased"> </ToggleSwitch> <ToggleSwitch x:Name="maxToggleSwitch" VerticalAlignment="Center" FlowDirection="LeftToRight" OffContent="" OnContent="" PointerReleased="maxToggleSwitch_PointerReleased"> </ToggleSwitch> 我想要如果 onlineToggle isOn = true,则offlineToggle 和 maxToggle 关闭。如果offlineToggle isOn = true,则onlineToggle 和maxToggle 关闭。如果 maxToggle isOn = true,则 onlineToggle 和 OfflineToggle 关闭。 代码: private void onlineToggleSwitch_PointerReleased(object sender, PointerRoutedEventArgs e) { onlineToggleSwitch.IsOn = true; offlineToggleSwitch.IsOn = false; maxToggleSwitch.IsOn = false; } private async void offlineToggleSwitch_PointerReleased(object sender, PointerRoutedEventArgs e) { onlineToggleSwitch.IsOn = false; offlineToggleSwitch.IsOn = true; maxToggleSwitch.IsOn = false; } private void maxToggleSwitch_PointerReleased(object sender, PointerRoutedEventArgs e) { onlineToggleSwitch.IsOn = false; offlineToggleSwitch.IsOn = false; maxToggleSwitch.IsOn = true; } 但是我有一个问题,即如果 onlineToggle isOn = true,那么我想更改 maxToggle = true,那么 Toogleswitches 都关闭(maxToggle 不会打开),如下视频所示: https://1drv.ms/v/s!Av6G8Zq_Px8Whi9eSZTSDPqMUCdA?e=25cJtD 如何处理? 根据您的描述,您应该最多选择三个切换开关之一。 建议使用 Toggled 事件而不是 PointerReleased 事件。判断事件中当前ToggleSwitch是否为IsOn,然后关闭另外两个ToggleSwitch。 <ToggleSwitch x:Name="onlineToggleSwitch" VerticalAlignment="Center" FlowDirection="LeftToRight" OffContent="" OnContent="" Toggled="onlineToggleSwitch_Toggled"> </ToggleSwitch> <ToggleSwitch x:Name="offlineToggleSwitch" VerticalAlignment="Center" FlowDirection="LeftToRight" OffContent="" OnContent="" Toggled="offlineToggleSwitch_Toggled"> </ToggleSwitch> <ToggleSwitch x:Name="maxToggleSwitch" VerticalAlignment="Center" FlowDirection="LeftToRight" OffContent="" OnContent="" Toggled="maxToggleSwitch_Toggled"> </ToggleSwitch> private void onlineToggleSwitch_Toggled(object sender, RoutedEventArgs e) { if (onlineToggleSwitch.IsOn == true) { offlineToggleSwitch.IsOn = false; maxToggleSwitch.IsOn = false; } } private void offlineToggleSwitch_Toggled(object sender, RoutedEventArgs e) { if (offlineToggleSwitch.IsOn == true) { onlineToggleSwitch.IsOn = false; maxToggleSwitch.IsOn = false; } } private void maxToggleSwitch_Toggled(object sender, RoutedEventArgs e) { if (maxToggleSwitch.IsOn == true) { onlineToggleSwitch.IsOn = false; offlineToggleSwitch.IsOn = false; } }

回答 1 投票 0

如何确定 UWP 中框架显示的当前页面

我对 UWP 开发相当陌生,到目前为止,我按照下面的教程制作了一个程序,该程序使用 NavigationView 进行选择并使用 Frame 加载页面来浏览页面。但我...

回答 1 投票 0

仅使用 DataTable WinUI3 MVVM 中的数据填充 DataGrid

数据表填充有数据库中的数据。 var query = $"SELECT * FROM {databaseTable.Name}"; OracleCommand oracleCommand = new OracleCommand(query, _connection);

回答 1 投票 0

使用 c# 修改 SVG 文件的属性并将其设置为 uwp 中图像元素的源

string svgFilePath = "ms-appx:///Assets/Chart.svg"; XNamespace svgNamespace = "http://www.w3.org/2000/svg"; StorageFile svgFile = 等待 StorageFile.GetFileFromApplicationUriAsy...

回答 1 投票 0

我正在尝试使用 CotentDialog 获取一些数据并在 UWP XAML 的数据库中更改它,但遇到了一些问题

private async void iconu_PointerPressed(对象发送者,PointerRoulatedEventArgs eventArgs) { if (BigGrid.SelectedIndex == -1) { 内容对话框dialog2 = 新的内容对话框 { ...

回答 1 投票 0

有条件地拖放/可重新排列TreeView

我在 UWP 应用程序中设置拖放树视图时遇到问题,用户可以对树中的项目进行重新排序。有一个演示应用程序,我用它来满足我的需要......

回答 1 投票 0

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