小编Bjö*_*örn的帖子

在WPF中断开元素与任何/未指定的父容器的连接

我有一个控件是另一个控件的子控件(因为所有非root控件/元素都在WPF中).如果我想将控件移动到另一个容器,我必须先将它与当前容器断开连接(否则抛出异常).

如果我知道父母是什么,那么我可以将它从其儿童收藏品,内容或其他内容中删除.但是,如果我不知道父容器的类型是什么 - 如何删除子控件呢?

在下面的代码示例中:如何在不知道父类型(Panel,GroupBox ...)的情况下将"sp1"移动到另一个容器?

// Add the child object "sp1" to a container (of any type).
StackPanel sp1 = new StackPanel();
SomeParentControl.Children.Add(sp1);

// Somewhere else in the code. I still have a reference to "sp1" but now I don't know what container it is in. I just want to move the "sp1" object to another parent container.
AnotherParentControl.Content = sp1; // Generates exception: "Must disconnect specified child from current parent Visual before attaching to new parent Visual."
Run Code Online (Sandbox Code Playgroud)

理想情况下,我只想写一些类似的东西: …

c# wpf logical-tree

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

绑定到XAML中的Image时处理null

我在XAML中有一个Image元素.我将Source属性绑定到ViewModel中的字符串属性.但是,有时值为null,然后我在调试窗口中出现错误.

我在这里读到:Source = null的ImageSourceConverter错误,如果值为null,我可以使转换器返回DependencyProperty.UnsetValue.

现在我想知道是否可以直接在XAML中进行操作?也许通过使用FallbackValue?我尝试了一些变种,但没有运气.

这是我在XAML中的Image元素:

<Image Name="img" Source="{Binding Path=CurrentImageSource}" Stretch="None" />
Run Code Online (Sandbox Code Playgroud)

而CurrentImageSource只是DataContext上的一个字符串属性.

错误消息是:System.Windows.Data错误:23:

无法将''从类型''转换为'sv-SE'文化的'System.Windows.Media.ImageSource',默认转换为; 考虑使用Binding的Converter属性.NotSupportedException:'System.NotSupportedException:ImageSourceConverter无法转换(null).

wpf binding

18
推荐指数
3
解决办法
2万
查看次数

Blazor:如何从子组件中的事件中获取发送者

我已经按照文档中的描述制作了一个带有事件的组件

如果我使用该组件的多个实例,有什么方法可以判断是哪个实例触发了事件?
在“常规”.net 中通常有一个sender参数。

请参阅我的BlazorFiddle
... 或在此处查看我的示例代码:

子组件

<div class="panel panel-default">
    <div class="panel-heading">@Title</div>
    <div class="panel-body">@ChildContent</div>

    <button class="btn btn-primary" @onclick="OnClick">
        Trigger a Parent component method
    </button>
</div>

@code {
    [Parameter]
    private string Title { get; set; }

    [Parameter]
    private RenderFragment ChildContent { get; set; }

    [Parameter]
    private EventCallback<UIMouseEventArgs> OnClick { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

指数

@page "/"

<ChildComponent Title="Panel Title from Parent"
                OnClick="@ShowMessage">Hello child 1</ChildComponent>

<br>
<br>

<ChildComponent Title="Panel Title from Parent"
                OnClick="@ShowMessage">Hello child 2</ChildComponent>

<br> …
Run Code Online (Sandbox Code Playgroud)

asp.net-core blazor

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

是否可以在 C# 中使用带有 CA 证书的 .p12 文件而不将其导入证书存储区

我得到了一个 .p12 证书文件,其中包含 3 个证书。其中2个是CA证书。

如果我使用curl(Win10上的7.70)我可以这样做:curl -s -S -i --cert Swish_Merchant_TestCertificate_1234679304.p12:swish --cert-type p12 --tlsv1.2 --header "Content-Type:application/json “ https://mss.cpc.getswish.net/swish-cpcapi/api/v1/ paymentrequests paymentrequests --data-binary @jsondata.json

Curl 在连接到服务器时将使用 p12 文件中的 CA 证书。

另一方面,如果我尝试在 .net core (3.1) 中执行类似的操作,则会失败并显示错误消息“收到的消息意外或格式错误”。

var handler = new HttpClientHandler();
var certs = new X509Certificate2Collection();
certs.Import(@"Swish_Merchant_TestCertificate_1234679304.p12", "swish", X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet);
foreach (var cert in certs)
{
    handler.ClientCertificates.Add(cert);
}
var client = new HttpClient(handler);
var url = "https://mss.cpc.getswish.net/swish-cpcapi/api/v1/paymentrequests";
var request = new HttpRequestMessage()
{
    RequestUri = new Uri(url),
    Method = HttpMethod.Post,
};
request.Content …
Run Code Online (Sandbox Code Playgroud)

c# curl certificate x509certificate .net-core

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

在Fluent NHibernate中按ID设置引用的实体

我正在使用Fluent NHibernate(v.1.3),我有两个参与者:

public class MyObject
{
    public virtual int Id { get; protected set; }
    public virtual string Tag { get; set; }
    public virtual List ListValue { get; set; }
}

public class List
{
    public virtual int Id { get; protected set; }
    public virtual string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

映射看起来像这样:

public MyObjectMap()
{
    Table("my_table");

    Id(x => x.Id).Column("dtl_id").GeneratedBy.Native();
    Map(x => x.Tag).Column("mfl_tag").Not.Nullable();
    References<List>(x => x.ListValue).Column("lst_id").Nullable();
}

public ListMap()
{
    Id(x => x.Id).Column("lst_id").GeneratedBy.Native();
    Map(x => x.Name).Column("lst_name").Nullable().Length(50);
}
Run Code Online (Sandbox Code Playgroud)

现在我想在MyObject上设置"lst_id"值(即ListValue.Id). …

.net c# nhibernate

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

使用aspnet身份在登录期间检查用户的角色

我正在研究 asp.net 应用程序。我有 4 个角色的 aspnetroles 表:

**Id    Name**
1   Admin
4   Consumer
2   Provider
3   SaleUser
Run Code Online (Sandbox Code Playgroud)

在 AccountController Register Action 方法中,我添加了这个:

 var user = new ApplicationUser { UserName = model.Email, Email = model.Email};
                var result = await UserManager.CreateAsync(user, model.Password);
                **UserManager.AddToRole(user.Id, model.UserRole);**
Run Code Online (Sandbox Code Playgroud)

现在我在登录时检查登录操作结果如下:

我看到 aspnetusers 和 aspnetuseroles 表有正确的数据。

var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);


   if (User.IsInRole(model.UserRole))
                            return RedirectToLocal(returnUrl);
Run Code Online (Sandbox Code Playgroud)

但条件失败。如何检查用户是否属于特定角色。

我在 Startup.cs ConfigureAuth 方法中添加了以下行:

 app.CreatePerOwinContext<ApplicationRoleManager>(ApplicationRoleManager.Create);
Run Code Online (Sandbox Code Playgroud)

和 identityConfig 类中的这个类:

 public class ApplicationRoleManager : RoleManager<IdentityRole>
    {
        public ApplicationRoleManager(IRoleStore<IdentityRole, string> store) …
Run Code Online (Sandbox Code Playgroud)

c# asp.net

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