标签: maui

是否可以更改 .Net Maui 中工具栏项目更多图标、汉堡包图标和后退按钮的颜色?

我有一个带有 .net maui 的弹出主控/详细信息页面。

在深色模式下,汉堡按钮、后退按钮和工具栏项目更多图标(三个点)在windwos上显示为黑色。在 Android 上,只有工具栏项目更多图标(三个点)是黑色的,后退按钮是白色的。

如何在 windows、android、ios 上的 .net maui 中更改我的工具栏项目更多图标颜色、humberger 图标颜色和后退按钮颜色?

提前致谢。

视窗:

在此输入图像描述

安卓:

在此输入图像描述

Windows 浅色模式:这里如何使更多图标变白?

在此输入图像描述

我的风格`

<Color x:Key="Background_Dark">#081B25</Color>
<Color x:Key="DarkGreenBackgroundColor">#187D21</Color>
<Style TargetType="NavigationPage" ApplyToDerivedTypes="True">
    <Setter Property="BackgroundColor" Value="{AppThemeBinding Light={StaticResource DarkGreenBackgroundColor}, Dark={StaticResource Background_Dark}}" />
    <Setter Property="BarBackgroundColor" Value="{AppThemeBinding Light={StaticResource DarkGreenBackgroundColor}, Dark={StaticResource Background_Dark}}" />
    <Setter Property="BarTextColor" Value="White" />
    <Setter Property="IconColor" Value="White" />
</Style>

<Style TargetType="Page" ApplyToDerivedTypes="True">
    <Setter Property="Padding" Value="0"/>
    <Setter Property="BackgroundColor" Value="{AppThemeBinding Light=White, Dark={StaticResource Background_Dark}}" />
</Style>
Run Code Online (Sandbox Code Playgroud)

`

.net flyout maui darkmode

5
推荐指数
1
解决办法
3692
查看次数

如何找出DllNotFoundException之后缺少哪个依赖项?

我想编写一个小型 .Net MAUI 应用程序,它使用 C# SDK NuGet 包(实现Hyperledger Anoncreds)。在 Android(模拟器或设备)上运行应用程序时,大多数 SDK 方法调用都可以工作,但某些调用仍然会抛出异常,而DllNotFoundException没有任何指示实际缺少哪个 Dll。

在我阅读了 SDK 后,我能够.so向 MAUI 项目添加一些依赖项,但显然仍然缺少一些依赖项。

我已经尝试阅读 SDK 源代码和它包装的一些 Rust 代码,以预感可能缺少的内容。但即使费力地浏览这些cargo.toml文件也只向我展示了板条箱,而不是任何实际的库。

像“APK分析器”这样的Android工具提供了很多有用的信息,但没有依赖关系概述,并且“Dependency Walker”工具只分析与实际Android环境不同的Windows构建的二进制文件。

如何找到异常指示的缺失依赖项?有没有像“Dependency Walker”这样的适用于 Android APK 的工具?

编辑:修复了一些拼写错误并添加了更多信息。

c# dependencies android apk maui

5
推荐指数
1
解决办法
235
查看次数

.NET MAUI开放系统设置

有人可以告诉我如何使用 .NET MAUI 强制系统打开系统设置,或者更好的系统设置 > myApp > 权限?我正在尝试编写代码,在不允许应用程序使用相机后将用户重定向到设置。

Android 和 iOS 均可

我尝试寻找与意图相关的东西

.net maui

5
推荐指数
1
解决办法
2009
查看次数

MAUI:在页面之间导航的 GoToAsync() 和 PushAsync() 之间有什么区别?

我正在尝试了解如何在 MAUI 应用程序和 MVVM 的页面之间导航的最佳方式。

我在 Microsoft 的示例中看到,默认的操作方式是使用PushAsync(),但后来我发现可以使用 进行导航Shell.Current.GoToAsync()

两者有什么区别?或者说它们是互补的?

c# mvvm maui

5
推荐指数
1
解决办法
1992
查看次数

如何更改 CollectionView 中所选项目的背景颜色?.Net 毛伊岛

在Android中,默认颜色是橙色,但我不知道如何更改它。\n我尝试了微软官方文档的演示代码,但\xc2\xb4不起作用。

\n
//Xaml//\n<CollectionView ItemsSource="{Binding Products}"\n                ItemTemplate="{StaticResource OfferProductStyle}"\n                ItemsLayout="VerticalGrid,1"\n                SelectionMode="Single"\n                x:Name="MyCollectionView">\n</CollectionView>\n\n
Run Code Online (Sandbox Code Playgroud)\n

我的收藏查看

\n

c# maui

5
推荐指数
2
解决办法
7114
查看次数

我正在尝试在 MAUI 应用程序中使用本机 C++ 库,但无法使其在 MacOS/iOS 上运行

这里有一篇很棒的文章,描述了如何在 Xamarin/C# 中使用本机 C++ 库,我认为这会扩展到 MAUI:https: //learn.microsoft.com/en-us/xamarin/cross-platform/cpp /

我按照这些说明进行操作,并在这里整理了一个端到端的演示解决方案: https: //github.com/whodges/bindingsample。这确实需要您将 Visual Studio 连接到 MacBook 来构建完整的解决方案。

该示例本质上使用默认的 MAUI 模板,并对其进行了轻微修改,以便根据每个平台设置实际的“点击计数器”值并从本机库中检索。对于 Windows,这是一个 C++ DLL(效果很好)。对于 Android,这是一个 .so 库(效果很好)。对于 iOS,这是一个静态 .a 库,这就是我遇到麻烦的地方:当我尝试使用 iOS 模拟器启动这个应用程序时,它失败并出现 clang++ 错误,并且出现类似“无法提取来自 .../obj/Debug/net6.0-ios/iossimulator-x64/linker-cache/libCounteriOS.a 的本机库“libCounteriOS.a”。请确保本机库已正确嵌入到托管程序集中(如果该程序集是使用绑定项目构建的,本机库必须包含在项目中,并且其构建操作必须是“ObjcBindingNativeLibrary”)”。

我创建了一个 C# .NET iOS 绑定库项目(在我的示例中为 Counter.iOS),这应该捆绑 libCounteriOS.a,它是在编译 CounteriOS(一个 C++ 项目)时生成的。首先,当在 Windows 上使用 Visual Studio 构建 Counter.iOS 时,它无法在其“bin”文件夹中生成 Counter.resources 文件夹以及后续的“manifest”文件。当我使用 Visual Studio for Mac 时,生成这些文件。因此,我坚持使用 Visual Studio for Mac 来构建 iOS.Counter 项目(其他所有内容都是使用 Windows 上的 Visual Studio 构建的)。

无论如何,我仍然收到我描述的“无法提取本机库”错误。我尝试将 Counter.iOS 中库文件的“构建操作”设置为 ObjcBindingNativeLibrary,但这只会导致 Visual Studio for …

c++ static native ios maui

5
推荐指数
0
解决办法
605
查看次数

CollectionView 在调试中工作,但在 .NET MAUI 中的发布中不起作用

我有以下内容

<CollectionView Margin="5" ItemsSource="{Binding Subjects}">
    <CollectionView.ItemsLayout>
        <GridItemsLayout Orientation="Vertical" Span="2" />
    </CollectionView.ItemsLayout>
    <CollectionView.EmptyView>
        <ContentView>
            <Label Text="No subjects entered yet..." />
        </ContentView>
    </CollectionView.EmptyView>
    <CollectionView.ItemTemplate>
        <DataTemplate>
            <Border MaximumWidthRequest="300">
                <Border.StrokeShape>
                    <RoundRectangle CornerRadius="10" />
                </Border.StrokeShape>
                <Border.GestureRecognizers>
                    <TapGestureRecognizer Command="{Binding Source={RelativeSource AncestorType={x:Type vm:MainPageViewModel}}, Path=DeleteSubjectCommand}" CommandParameter="{Binding .}" />
                </Border.GestureRecognizers>
                <Label Margin="5" Text="{Binding .}" />
            </Border>
        </DataTemplate>
    </CollectionView.ItemTemplate>
</CollectionView>
Run Code Online (Sandbox Code Playgroud)

问题是,<Label Margin="5" Text="{Binding .}" />在我的 .NET MAUI Android 应用程序中,发布时的 是空白的,而在调试时,它已填充并且手势识别器可以工作。当我将项目添加到列表中时,会出现正确的项目数量,因此我认为上面突出显示的标签发生了一些情况。

我该如何解决这个问题?

xaml xamarin.forms maui

5
推荐指数
1
解决办法
794
查看次数

在 .NET MAUI 应用程序中的视图模型中设置图像源

在我的 .NET MAUI 应用程序中,我希望能够通过将图像源绑定到视图模型中的属性来设置图像源 - 如下所示:

public partial class MyViewModel : BaseViewModel
{
   [ObservableProperty]
   ImageSource myImageSource;

   void Init()
   {
        if(somevalue == "something")
           MyImageSource = ImageSource.FromFile("image_a.png");
        else
           MyImageSource = ImageSource.FromFile("image_b.png");
   }
}
Run Code Online (Sandbox Code Playgroud)

在我的 XAML 页面<我这样做:

<Image
   Source{Binding MyImageSource}
   HeightRequest="30"
   HorizontalOptions="Center"
   VerticalOptions="Center" />
Run Code Online (Sandbox Code Playgroud)

这不显示图像,但没有错误。在我的视图模型中,我也尝试过MyImageSource = ImageSource.FromResource("MyProject.Resources.Images.image_a.png");也不显示图像。

我要显示的图像位于Resources > Images文件夹中。

我在这里做错了什么?如何Resources通过我的视图模型将图像源设置为文件夹中的文件?

maui

5
推荐指数
1
解决办法
8009
查看次数

如何从视图模型显示弹出窗口。毛伊岛

我正在使用 Nuget CommunityToolkit.Maui.Views。我的毛伊岛应用程序我也使用 viewModels。现在我想通过 viewmodel 方法显示我的自定义对话框。但

this.ShowPopup(new DialogPopup());
Run Code Online (Sandbox Code Playgroud)

只能在 Page 对象上调用。

我可以将值 Page 分配给 viewModel 中的属性,但我不确定这是实现它的最佳选择:

private readonly MainViewModel _mainViewModel;
public MainPage(MainViewModel vm)
{
    InitializeComponent();
    BindingContext = vm;
    _mainViewModel = vm;
    _mainViewModel.Page = this;
}
Run Code Online (Sandbox Code Playgroud)

并在视图模型中

public Page Page { get; set; }
Run Code Online (Sandbox Code Playgroud)

Page.ShowPopup(new DialogPopup());
Run Code Online (Sandbox Code Playgroud)

ShowPopup 方法如下所示:

public static void ShowPopup<TPopup>(this Page page, TPopup popup) where TPopup : Popup {...}
Run Code Online (Sandbox Code Playgroud)

我应该如何实现它才能在我的视图模型中使用此 ShowPupup 方法?

我正在使用 Net 7.0 和依赖注入来初始化我的对象。

c# xamarin maui

5
推荐指数
1
解决办法
6531
查看次数

使用参数将依赖项注入到 ContentView(代码隐藏)中

在我的 .NET MAUI MauiProgram.cs 中,我注册了一个 ResourceManager 以及名为 MyContentView 的 ContentView 的代码隐藏(指的是 MyContentView.xaml.cs):

来自 MauiProgram.cs 的部分

...
var builder = MauiApp.CreateBuilder();
builder
    .UseMauiApp<App>()
    .UseMauiCommunityToolkit()
    .UseLocalizationResourceManager(settings =>
    {
        settings.RestoreLatestCulture(true);
        settings.AddResource(AppResources.ResourceManager);
    })
    .ConfigureFonts(fonts =>
    {
        fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
        fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
    });

builder.Services.AddTransient<MyItemInputControlView>();

builder.Services.AddTransient<MyContentPage>();
builder.Services.AddTransient<MyContentPageViewModel>(); 
Run Code Online (Sandbox Code Playgroud)

MyItemInputControlView.xaml

<?xml version="1.0" encoding="utf-8" ?>
<ContentView xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
             xmlns:views="clr-namespace:MyApp.Pages.Views"
             xmlns:loc="clr-namespace:LocalizationResourceManager.Maui;assembly=LocalizationResourceManager.Maui"
             xmlns:viewModels="clr-namespace:MyApp.ViewModels"
             x:Class="MyApp.Pages.Views.MyItemInputControlView"
             x:Name="this">

        
    <StackLayout BindingContext="{x:Reference this}">
        <Grid Margin="20, 0, 20, 0">
            <Grid.Resources>
                <!--<Style TargetType="Entry">
                    <Setter Property="Padding" Value="2 1" />
                    <Setter Property="BorderBrush" Value="LightGray" />
                </Style>-->
            </Grid.Resources>
            
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto" …
Run Code Online (Sandbox Code Playgroud)

maui contentview

5
推荐指数
1
解决办法
2069
查看次数

标签 统计

maui ×10

c# ×4

.net ×2

android ×1

apk ×1

c++ ×1

contentview ×1

darkmode ×1

dependencies ×1

flyout ×1

ios ×1

mvvm ×1

native ×1

static ×1

xamarin ×1

xamarin.forms ×1

xaml ×1