小编rav*_*mar的帖子

UWP VisualTreeHelper.GetParent()返回null

我有一个ContentDialogListView.这个ListView'sDataTemplate包含一个,Grid而且它Grid有一个Button.代码如下:

<ContentDialog x:Name="DownloadListDialog" x:FieldModifier="public" Grid.Column="1">
    <ListView Name="AssetsListView" IsItemClickEnabled="False" Grid.Row="1" SelectionMode="Single" MaxHeight="500" ItemsSource="{x:Bind _viewModel.Assets, Mode=OneWay}">
        <ListView.ItemContainerStyle>
            <Style TargetType="ListViewItem">
                       ...
                       ...
                    </Style>
        </ListView.ItemContainerStyle>
        <ListView.ItemTemplate>
            <DataTemplate x:DataType="viewModel:AssetViewModel">
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*"/>
                        <ColumnDefinition Width="Auto"/>
                    </Grid.ColumnDefinitions>
                    <StackPanel>
                        <TextBlock Text="{x:Bind name}"/>
                        <StackPanel Orientation="Horizontal">
                            <TextBlock Text="{x:Bind lblFileSize}"/>
                            <TextBlock Text="{x:Bind contentSize, Mode=OneWay}"/>
                            <TextBlock Text="{x:Bind contentUrl}" Visibility="Collapsed"/>
                        </StackPanel>
                    </StackPanel>
                    <Button Content="Download" Click="Button_Click" HorizontalAlignment="Right" Grid.Column="1"/>
                </Grid>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</ContentDialog>
Run Code Online (Sandbox Code Playgroud)

这是我的Button Click事件处理程序:

private async void Button_Click(object sender, RoutedEventArgs …
Run Code Online (Sandbox Code Playgroud)

c# xaml uwp

12
推荐指数
1
解决办法
654
查看次数

Golang 与 docker 镜像内的 CGO 交叉编译

要求:应用程序必须容器化为 docker 镜像,并且需要支持arm64amd64架构。

代码库:它是一个 golang 应用程序,需要使用git2go库,并且必须CGO_ENABLED=1构建项目。最小的可重现示例可以在 github 上找到。

主机:我使用 arm64 M1 mac 和 docker 桌面来构建应用程序,但结果在我们的 amd64 Jenkins CI 构建系统上类似。

Dockerfile

FROM golang:1.17.6-alpine3.15 as builder

WORKDIR /workspace
COPY go.mod go.mod
COPY go.sum go.sum

RUN apk add --no-cache libgit2 libgit2-dev git gcc g++ pkgconfig

RUN go mod download

COPY main.go main.go

ARG TARGETARCH TARGETOS

RUN CGO_ENABLED=1 GO111MODULE=on GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -tags static,system_libgit2 -a -o gitoperations main.go

FROM …
Run Code Online (Sandbox Code Playgroud)

gcc go cgo docker buildx

9
推荐指数
1
解决办法
3037
查看次数

ASP.NET Core 1.1获取所有用户及其角色

我是.NET的新手,试图获取所有注册用户的列表及其角色名称,并使用viewModel将它们发送到视图.

这是ViewModel:

public class ApplicationUserListViewModel
{
    [Display(Name = "User Email Address")]
    public string UserEmail { get; set; }

    public  List<IdentityUserRole<string>> Roles { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我尝试了这个以获取所有用户及其角色,并为每个用户创建一个ViewModel,并将所有视图模型放在一个列表中以传递给View:

var users =  _userManager.Users.ToList();
var userList = users.Select(u => 
                new ApplicationUserListViewModel {
                    UserEmail = u.Email,
                    Roles = u.Roles.ToList() }
                    ).ToList(); 
Run Code Online (Sandbox Code Playgroud)

但是,当我明确地为每个用户分配角色时,这总是为每个用户提供0个角色.

c# asp.net-mvc entity-framework asp.net-identity

7
推荐指数
1
解决办法
8853
查看次数

Webpack 在 bundle 中包含它自己的依赖项

我是 webpack 的新手,我有一个使用vue cli. 在使用 分析 webpack 包(在生产模式下使用 构建vue-cli-service build)时webpack-bundle-analyzer,我发现一个特定文件bn.js被多次包含在包中。运行时npm ls bn.js我发现它的父依赖是webpack它本身。

`-- webpack@4.44.1
  `-- node-libs-browser@2.2.1
    `-- crypto-browserify@3.12.0
      +-- browserify-sign@4.2.1
      | +-- bn.js@5.1.3
      | +-- browserify-rsa@4.0.1
      | | `-- bn.js@4.11.9
      | +-- elliptic@6.5.3
      | | `-- bn.js@4.11.9
      | `-- parse-asn1@5.1.6
      |   `-- asn1.js@5.4.1
      |     `-- bn.js@4.11.9
      +-- create-ecdh@4.0.4
      | `-- bn.js@4.11.9
      +-- diffie-hellman@5.0.3
      | +-- bn.js@4.11.9
      | `-- miller-rabin@4.0.1
      |   `-- bn.js@4.11.9
      `-- public-encrypt@4.0.3
        `-- bn.js@4.11.9
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,当 webpack …

javascript npm webpack vue.js webpack-bundle-analyzer

7
推荐指数
1
解决办法
662
查看次数

使用标志运行和调试单元测试

我希望能够使用测试资源管理器或代码镜头在 VS Code 中运行和调试单元测试。
但为了运行我的测试,我需要添加这个标志:

-ldflags "-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn" 
Run Code Online (Sandbox Code Playgroud)

因此,在我的 vscode settings.json 文件中,我添加了以下 json:

"go.testFlags": [        
    "-ldflags",
    "\"-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn\""
]
Run Code Online (Sandbox Code Playgroud)

现在,当我单击测试资源管理器或代码镜头中的“运行测试”按钮时,VS Code 会生成以下命令:

/opt/homebrew/bin/go test -timeout 30s -run ^TestCreateNamespace$ github.com/SomePath/SomeRepo/internal/models/v2 -ldflags "-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn"
Run Code Online (Sandbox Code Playgroud)

但测试用例失败并出现以下错误:

panic: proto: extension number 1042 is already registered on message google.protobuf.FileOptions
See https://developers.google.com/protocol-buffers/docs/reference/go/faq#namespace-conflict
Run Code Online (Sandbox Code Playgroud)

-ldflags如果我不在go test 命令中提供,这正是我所期望的错误。但令人惊讶的是,当我复制上面提到的完全相同的 vs code 生成的测试命令并在终端中运行该命令时,测试用例就会通过。
除了从 Vs Code 运行测试之外,我还希望能够通过设置断点和单步执行代码来调试它们。

开发环境:如果重要的话,我使用的是arm64苹果M1 Mac。

更新:在摆弄这些go.testFlags值之后,我发现:

  1. 此配置适用于 VS Coderun test功能:
"go.testFlags": [        
    "-ldflags",
    "-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn"
]
Run Code Online (Sandbox Code Playgroud)
  1. 此配置适用于 VS Codedebug …

go visual-studio-code delve gopls

6
推荐指数
1
解决办法
4030
查看次数

在 UWP 中使用 Pivot 的 SelectedIndex 属性

我有一个页面,其中只有一个支点。该页面始终被缓存。现在,每当我导航到此页面时,我都希望从缓存中加载其内容和选择,但我希望PivotItem查看第一个。XAML:

<Pivot x:Name="FilterPivot" 
        IsHeaderItemsCarouselEnabled="True"
        SelectedIndex="0">

    <PivotItem Header="Author" >               

        <ListBox ItemsSource="{x:Bind AuthorFacets, Mode=OneWay}"
                    Name="AuthorListBox"                         
                    SelectionMode="Multiple"
                    SelectionChanged="AuthorListBox_SelectionChanged">

            <ListBox.ItemContainerStyle>
                <Style TargetType="ListBoxItem">
                    <Setter Property="HorizontalContentAlignment" Value="Stretch" />
                </Style>
            </ListBox.ItemContainerStyle>


            <ListBox.ItemTemplate>
                <DataTemplate x:DataType="local:IFacet">
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="*"></ColumnDefinition>
                            <ColumnDefinition Width="Auto"></ColumnDefinition>
                        </Grid.ColumnDefinitions>

                        <TextBlock Grid.Column="0"
                                        Text="{x:Bind read}"
                                        TextWrapping="Wrap"
                                        HorizontalAlignment="Left"
                                        VerticalAlignment="Center"/>

                        <Border Grid.Column="1"
                                    Background="Gray"
                                    MinWidth="25"
                                    CornerRadius="8">
                            <TextBlock Text="{x:Bind num}"
                                            HorizontalAlignment="Center"
                                            VerticalAlignment="Center"
                                            Padding="2"/>
                        </Border>

                    </Grid>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

    </PivotItem>


    <PivotItem Header="Language">

        ....
        ....

    </PivotItem>

    <PivotItem Header="Learning Resource Type">

        ....
        ....

    </PivotItem>



    <PivotItem Header="Subject">

        ....
        ....

    </PivotItem>

    <PivotItem …
Run Code Online (Sandbox Code Playgroud)

c# xaml uwp

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

Vue js Prefetch 组件

我最近了解了延迟加载组件并开始使用它。现在我正在尝试预取延迟加载的组件以及vue-router路由。但是使用 chrome devtools 我发现只有当我们实际导航到延迟加载的路由(在 vue-router 路由的情况下)或当v-if评估为true并呈现组件时(在延迟加载的情况下)才加载延迟加载的块成分)。

我还尝试webpackPrefetch: true在路由器中使用魔术字符串以及组件导入语句,但这样做似乎没有任何区别。

项目结构:
主从布局

路由器配置:

import Vue from "vue";
import Router from "vue-router";
Vue.use(Router);

var routes = [  
  {
    path: "/DetailPage",
    component: () => import(/* webpackChunkName: "Detail-chunk" */ "AppModules/views/MyModuleName/DetailPage.vue")
  },
  {
    path: "/MasterPage",
    component: () => import("AppModules/views/MyModuleName/MasterPage.vue")
  }
]

export const router = new Router({
  routes: routes,
  stringifyQuery(query) {
    // encrypt query string here
  }
});

export default router;
Run Code Online (Sandbox Code Playgroud)

主视图:

<template> 
  <div @click="navigate">
    Some text
  </div> …
Run Code Online (Sandbox Code Playgroud)

javascript webpack vue.js code-splitting

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

拖动元素时出现滞后

我正在实现一个功能,可以在网页上添加、拖动和删除“便笺”。该应用程序是用 Vue js 构建的,但它也在 iframe 中渲染内容。添加到页面的所有注释都必须位于 iframe 的顶部(几乎占主 .vue 页面的 80%),因此在这里定位很重要,我还必须保留位置,因为我必须渲染注释在下一页重新加载时的同一位置。问题是拖动“note”元素有很多滞后。“便利贴”本身是一个重量非常轻的独立组件。
我注意到这是因为 vue 页面上存在 iframe,因为当我检查浏览器中的 DOM 并删除 iframe,然后尝试拖动“note”组件时,它会顺利工作。

我尝试过的事情:

  1. 使用节流:我尝试使用loadsh.throttle,但这没有任何区别。
  2. 在 iframe 内注入“便签”代码:我尝试将便签元素注入 iframe 并将其附加到 iframe 的主体中。它实际上使拖动变得非常平滑。但我不想继续使用这个解决方案,因为那样我将不得不编写大量额外的代码来维护多个笔记的状态(这可以使用 Vue js 轻松完成)。在此解决方案中,我没有使用document主页的 来附加拖动事件,而是将所有事件附加到iframe.contentDocument.


所以这里的问题是如何在使用 vue.js沙箱链接时使拖动平滑: https://codesandbox.io/s/affectionate-jang-3c1hw ?file=/src/components/HelloWorld.vue

拖动时的滞后

在这个 gif 中,背景实际上是 iframe,我降低了它的不透明度以隐藏它。
由于跨源问题,我实际上无法将 iframe 包含在沙箱代码中,但我在该沙箱中包含了很多额外的内容以使其变得沉重

更新:使用 chrome 任务管理器,我发现该页面仅占用最大 200MB 内存,而 GPU 进程又占用 200MB。我在 16GB RAM 的系统上运行它。所以我不认为这是内存问题。但是当我开始拖动元素时,CPU 消耗突然激增(高达 40%)。

更新:
我已经找到了这个问题的解决方法。实际的问题不是滞后,而是鼠标拖尾,即可拖动元素无法跟上快速移动的鼠标光标。而慢是因为里面的方法e.preventDefault造成的。只需删除即可解决所有问题。此外,仅在方法末尾添加 a似乎会导致相同的滞后量。dragMouseDownNote.vuee.preventDefaultreturn falsedragMouseDown

function dragMouseDown(e) {
     e = e …
Run Code Online (Sandbox Code Playgroud)

javascript iframe draggable vue.js

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

UWP 专注于 AutoSuggestBox

我的AutoSuggestBox可见性设置为Collapsed。在同一视图页面中,我有一个按钮。单击按钮时,我想显示AutoSuggestBox. 当查询已提交或AutoSuggestBox失去焦点时,我想再次隐藏它。

这是 AutoSuggestBox 和按钮:

<AutoSuggestBox Name="MainAutoSuggestBox"   
                Grid.Row="2"
                GotFocus="MainAutoSuggestBox_GotFocus"
                Visibility="Collapsed"
                QueryIcon="Find"                               
                QuerySubmitted="MainAutoSuggestBox_QuerySubmitted"
                LostFocus="MainAutoSuggestBox_LostFocus"/>

<Button Name="TopBarSearchButton"
        Content="Button"
        Click="TopBarSearchButton_Click"/>
Run Code Online (Sandbox Code Playgroud)

我的代码隐藏:

class SomePage : page
{
    ...
    ...

    private void MainAutoSuggestBox_GotFocus(object sender, RoutedEventArgs e)
    {
        //only for testing purposes
    }

    private void MainAutoSuggestBox_LostFocus(object sender, RoutedEventArgs e)
    {
        MainAutoSuggestBox.Visibility = Visibility.Collapsed;

        //put focus on the page
        this.Focus(FocusState.Programmatic);
    }

    private void MainAutoSuggestBox_QuerySubmitted(AutoSuggestBox sender, AutoSuggestBoxQuerySubmittedEventArgs args)
    {
        //Do something
        //Works fine
    }

    private void TopBarSearchButton_Click(object sender, RoutedEventArgs e) …
Run Code Online (Sandbox Code Playgroud)

c# xaml uwp

3
推荐指数
1
解决办法
1058
查看次数

检查 ContentDialog 是否打开

我有一个简单的问题。由于我一次只能COntentDialog打开一个,并且在关闭事件中ContentDialog我有一个条件,可以ContentDialog通过执行args.Cancel = true. 所以这样做ContentDialog.Hide()有时不能关闭ContentDialog,当再次打开对话框时会导致异常。因此,在任何对话框之前,我希望能够检查其他对话框是否已关闭。我怎样才能做到这一点 ?

c# xaml uwp

2
推荐指数
1
解决办法
1340
查看次数

使用Aes解密失败

我正在使用此函数来加密我的UWP项目中的数据:

public string Encrypt(string text, string key)
    {
        byte[] buffer = Encoding.UTF8.GetBytes(text);
        byte[] sessionKey = Encoding.UTF8.GetBytes(key);

        Aes myAes = Aes.Create();

        myAes.Mode = CipherMode.ECB;
        myAes.KeySize = 128;
        myAes.Key = sessionKey;
        myAes.Padding = PaddingMode.PKCS7;

        ICryptoTransform encryptor = myAes.CreateEncryptor();
        buffer = encryptor.TransformFinalBlock(buffer, 0, buffer.Length);

        return Convert.ToBase64String (buffer);

    }
Run Code Online (Sandbox Code Playgroud)

但是在解密从Encrypt()返回的数据时,我得到了不同的结果(不等于Encrypt()的文本参数).我使用以下代码:

public string Decrypt(string text, string key)

    {

        byte[] buffer = Convert.FromBase64String(text);
        byte[] sessionKey = Encoding.UTF8.GetBytes(key);

        Aes myAes = Aes.Create();

        myAes.Mode = CipherMode.ECB;
        myAes.KeySize = 128;
        myAes.Key = sessionKey;
        myAes.Padding = PaddingMode.PKCS7;

        ICryptoTransform decryptor = …
Run Code Online (Sandbox Code Playgroud)

c# encryption cryptography aes

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

在视图中的其他控件(ZIndex)上显示进度环

我正在制作一个UWP,我已经有了一个ListView观点.当我单击a时ListViewItem,我调用API,然后导航到另一个页面,传递被调用API的响应.我想要做的是,在调用API时,我想显示进度环(直到导航发生)

这是我现在的XAML:

<Grid>
    <ProgressRing Name="MyProgressRing" Grid.Row="0" Height="100" Width="100" Foreground="Red" IsActive="True" Visibility="Visible" />
            <ListView   Name="SearchResultListView"
                        SelectionMode="Single"
                        IsItemClickEnabled="True"
                        ItemClick="SearchResultListView_ItemClick">

                <ListView.ItemContainerStyle>
                    <Style TargetType="ListViewItem">
                        <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
                    </Style>
                </ListView.ItemContainerStyle>

                <ListView.ItemTemplate>
                    <DataTemplate x:DataType="ViewModel:SearchResultViewModel">

                        <Grid Style="{StaticResource SearchResultListViewStyle}">
                            <Grid.RowDefinitions>
                                <RowDefinition></RowDefinition>
                                <RowDefinition></RowDefinition>
                                <RowDefinition></RowDefinition>
                                <RowDefinition></RowDefinition>
                                <RowDefinition></RowDefinition>
                                <RowDefinition></RowDefinition>
                            </Grid.RowDefinitions>

                            <StackPanel Grid.Row="0">
                                <TextBlock Text="{x:Bind Name}"
                                    Grid.Row="0"/>
                            </StackPanel>

                            <TextBlock Text="{x:Bind Source}"
                                    Grid.Row="1"/>

                            <TextBlock Text="{x:Bind Author}"
                                    Grid.Row="2"/>

                            <TextBlock Text="{x:Bind EducationalLevel}"
                                    Grid.Row="3"/>

                            <StackPanel Orientation="Horizontal"
                                        Grid.Row="4">
                                <Border Background="Gray"
                                        Padding="3"
                                        CornerRadius="1">
                                    <TextBlock Text="{x:Bind Language}"
                                                FontSize="12"
                                                Margin="0, 0, 0, 2"/>
                                </Border>
                            </StackPanel>
                        </Grid> …
Run Code Online (Sandbox Code Playgroud)

xaml uwp

0
推荐指数
1
解决办法
918
查看次数