此标记用于Windows 10上Windows-Store-Apps特有的XAML UI框架,是通用Windows平台(UWP)的一部分。
XAML 二进制格式 (XBF) 生成器在使用 Visual Studio 的 UWP 中报告语法错误“0x09c6”
有人可以告诉我为什么 Visual Studio 中的 UWP 中会出现这个确切的错误吗?我注意到的模式是在数据模板内使用用户控件时,如下所示: 有人可以告诉我为什么 Visual Studio 中的 UWP 中会出现这个确切的错误吗?我注意到的模式是在数据模板内使用用户控件时,如下所示: <DataTemplate DataType="model:ValueModel"> <local:myControl Value="{x:Bind}"/> </DataTemplate> 在编译过程中,此错误会在随机位置和随机时间出现,特别是在创建新的空白页面或更改文件夹结构时。 如何检查 XBF 生成器的输出并找出问题所在? 请帮忙! 我遇到了完全相同的错误,结果是因为我尝试在页面上分配带有错误基类的附加属性,例如: <local:NavigablePage ... xmlns:local="using:MyProject.Views"> <Page.Resources> ... 而不是 <local:NavigablePage ... xmlns:local="using:MyProject.Views"> <local:NavigablePage.Resources> ... 对于那些因为错误信息而来到这里的人。也许 Github 问题中的解决方法可能会有所帮助。 自定义控件在 WinUI 3 预览版 3(桌面)中不起作用 这在 WinUI 3 2024 中仍然存在。 解决方法: 将Style中的命名空间声明(xmlns:local2)移动到ResourceDictionary命名空间列表中: <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:App24" xmlns:local2="using:App24.Controls"> <Style TargetType="local2:CustomControl2"> <Setter Property="Template"> <Setter.Value> 自动生成的代码(不起作用): <Style TargetType="local2:CustomControl2" xmlns:local2="using:App24.Controls"> <Setter Property="Template"> <Setter.Value> 当您在子文件夹中声明控件(本例中为“Controls”)时,就会发生这种情况。
如何通过使用 x:name 或标签定位来更改 WinUI 3 中 NavigationViewItem 的 Content 和 IsSelected 属性?
我创建了一些NavigationViewItem并设置它的x:Name和Tag,例如: 我创建了一些NavigationViewItem并设置了它的x:Name和Tag,比如: <NavigationView x:Name="nvSample" SelectionChanged="nvSample_SelectionChanged" IsBackButtonVisible="Collapsed" IsSettingsVisible="False"> <NavigationView.MenuItems> <NavigationViewItem x:Name="NavigationViewItem_HomePage" Icon="Home" Content="Home" Tag="HomePage" IsSelected="True" /> <NavigationViewItem x:Name="NavigationViewItem_SimpleSortPage" Icon="Sort" Content="Sort" Tag="SimpleSortPage" /> <...........> </NavigationView.MenuItems> </NavigationView> 我想通过 NavigationViewItem 或 x:Name 找到 Tag 对象,以便我可以通过代码更改 Content 和 IsSelected 属性。 我发现Type.GetType可能会通过x:Name获得页面,例如: Type pageSelected = Type.GetType("NumberSort.Pages.SimpleSort"); RootPageFrame.Navigate(pageSelected,this); 所以我尝试用它来获取 NavigationViewItem 对象,例如: var NavigationItem = (NavigationViewItem)Type.GetType("NavigationViewItem_HomePage"); 但是,它不起作用。 您可以创建如下扩展方法: NavigationViewExtensions.cs public static class NavigationViewExtensions { // Get all NavigationViewItems from a NavigationViewItem. public static IEnumerable<NavigationViewItem> GetAllNavigationViewItems(this NavigationViewItem navigationViewItem) { if (navigationViewItem.MenuItems is null) { yield break; } foreach (var menuItem in navigationViewItem.MenuItems.OfType<NavigationViewItem>()) { yield return menuItem; if (menuItem.MenuItems is null) { continue; } foreach (NavigationViewItem subMenuItem in menuItem.MenuItems.OfType<NavigationViewItem>()) { yield return subMenuItem; } } } // Get all NavigationViewItems from a NavigationView. public static IEnumerable<NavigationViewItem> GetAllNavigationViewItems(this NavigationView navigationView) { foreach (NavigationViewItem menuItem in navigationView.MenuItems.OfType<NavigationViewItem>()) { yield return menuItem; if (menuItem.MenuItems is null) { continue; } foreach (NavigationViewItem subMenuItem in menuItem.GetAllNavigationViewItems()) { yield return subMenuItem; } } } } 并像这样使用它: if (this.nvSample .GetAllNavigationViewItems() .FirstOrDefault(x => x.Name is "NavigationViewItem_HomePage") is NavigationViewItem navigationViewItem) { // Do something here. } 我找到了一个简单的方法来做到这一点: public static void SwitchPage (string pageName,NavigationView navigationView) { var navigationViewItems = navigationView.MenuItems.OfType<NavigationViewItem>().ToList(); if (navigationViewItems != null) { foreach (var item in navigationViewItems) { if( item.Tag.Equals(pageName)) { item.IsSelected = true; break; } } } else {throw new ArgumentNullException()}; } 在此示例中,它将 IsSelected 的 NavigationViewItem 属性设置为 true,其中 pageName 等于 Tag NavigationViewItem的属性。
如何在Surface平板上进行调试,而不需要每次要测试时打包传输?
我想通过连接 USB 电缆来调试我的 Surface 平板电脑上的 UWP 应用程序,就像我们在 Android 和 iOS 开发中所做的那样。目前,我正在
我正在将应用程序从 Windows Phone 8.1 移植到 UWP,但从资源获取字符串时遇到问题。在 WP 8.1 中,我可以通过以下方式获取字符串: Text="{绑定路径=LocalizedResources.
我正在使用 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";
我正在实现一个用户控件,它有一个网格,其中又包含一个带有按钮、文本块等的网格(比如说sampleGridItem)。sampleGridItem 用后面的代码中的列表填充。 我的目标是
我想为我的 UWP 应用制作一个类似 Windows 10 的 Tile 系统。 这是示例: 瓷砖系统。 我想要有组(例如开始菜单中的“代码”组), 和带有图像和技术的瓷砖...
我正在编写一个 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
是否必须有一些特殊的东西才能运行在 Bin 文件夹中输出的 .exe?当尝试以管理员身份运行 .exe 时,它只会崩溃并出现未处理的 win32 异常。
我有一个新的哲学问题,旨在强调旧的 WPF 模式和新的 UWP 模式之间的差异。 我想使用新属性扩展标准控件(例如按钮),...
我正在尝试通过虚拟化重新创建一个列表视图,以更深入地了解列表视图的工作原理。为此,我正在创建一个自定义面板。当列表视图项目垂直排列时我需要...
无法为 UWP 应用程序安装 Google.FlatBuffers Nuget 包
我在为 UWP 应用程序安装 FlatBuffers 包时遇到以下错误 NU1202:软件包 Google.FlatBuffers 24.3.25 与 uap10.0.17763 (UAP,版本=v10.0.17763) / win10-x86 不兼容。帕克...
我正在开发一个用于测试目的的传感器模拟器。我想要模拟的传感器是 BlueMaestro 湿度和温度传感器。 我需要广告 57 字节,但我目前无法...
如何对嵌套在 MenuFlyout 中的 ListView 中的项目使用键盘导航?
我有一个按钮,按下时会打开 MenuFlyout。 MenuFlyout 有几个自定义 MenuFlyoutItems:一个具有嵌套的 StackPanel,一个具有绑定的 Command,以及一个可操作的 ListView...
带有两个控件的简单页面,Button 和 GridView。按钮打开带有其他几个按钮的弹出窗口。 Gridview有一个大约100个元素的列表,所以有滚动。如果按钮的弹出按钮是...
我正在尝试向 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 是否为内容。
我想创建一个当用户使用软件键盘时不进行拼写检查的文本框。我已经尝试过这个: 我想创建一个当用户使用软件键盘时不进行拼写检查的文本框。我试过这个: <TextBox HorizontalAlignment="Stretch" IsSpellCheckEnabled="False" IsTextPredictionEnabled="False" /> 但不知何故,拼写检查仍然出现在软件键盘中。有什么建议吗? 您可以在 WinUI 中使用 IsSpellCheckEnabled 属性: <TextBox PlaceholderText="Benutzername" x:Name="tbUser" IsSpellCheckEnabled="False" />
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; }
我有 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; } }
我对 UWP 开发相当陌生,到目前为止,我按照下面的教程制作了一个程序,该程序使用 NavigationView 进行选择并使用 Frame 加载页面来浏览页面。但我...