提问人:solodeving 提问时间:11/15/2023 更新时间:11/15/2023 访问量:25
命令参数 Avalonia
Command Parameter Avalonia
问:
在我的登录视图中,我有一个“没有帐户”按钮,按下该按钮时会打开一个对话框。 该对话框包含“寄存器”视图。
<dialogHostAvalonia:DialogHost Identifier="NoAccountDialogHost"
Grid.ColumnSpan="2"
Grid.RowSpan="5"
>
<dialogHostAvalonia:DialogHost.DataTemplates>
<DataTemplate DataType="viewmodels:RegisterVM">
<views:RegisterView />
</DataTemplate>
</dialogHostAvalonia:DialogHost.DataTemplates>
</dialogHostAvalonia:DialogHost>
对话框打开就好了。
寄存器视图有 3 个文本框,这些文本框与寄存器视图模型中的 3 个属性绑定,这些属性工作正常,还有一个“注册”按钮。按下此按钮时,应将用户添加到数据库中,然后关闭对话框。命令的样子如下:
private void AddAccountToDB(DialogHost dialog)
{
//add
using (var context = new DatabaseContext())
{
var user = new User(Utilities.GenerateUserId() , Username!, Password! , Email!);
context.Credentials.Add(user);
context.SaveChanges();
}
//close dialog
dialog.CurrentSession!.Close();
}
如您所见,从我发送的按钮中,作为参数,DialogHost 实例。所以我这样做了:
CommandParameter="{RelativeSource AncestorType={x:Type
dialogHostAvalonia:DialogHost},Mode=FindAncestor}"
答:
0赞
Tarazed
11/15/2023
#1
您提供的是 RelativeSource 作为参数。您忘记包含绑定,以便它解析相对源。
CommandParameter="{Binding RelativeSource={RelativeSource AncestorType={x:Type
dialogHostAvalonia:DialogHost},Mode=FindAncestor}}"
评论