我有一个控件是另一个控件的子控件(因为所有非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)
理想情况下,我只想写一些类似的东西: …
我在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).
我已经按照文档中的描述制作了一个带有事件的组件
如果我使用该组件的多个实例,有什么方法可以判断是哪个实例触发了事件?
在“常规”.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) 我得到了一个 .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) 我正在使用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). …
我正在研究 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# ×4
wpf ×2
.net ×1
.net-core ×1
asp.net ×1
asp.net-core ×1
binding ×1
blazor ×1
certificate ×1
curl ×1
logical-tree ×1
nhibernate ×1