XAML 命令参数Avalonia

7gs2gvoe  于 9个月前  发布在  其他
关注(0)|答案(1)|浏览(147)

在我的登录视图中,我有一个“没有帐户?”按钮,当按下它时,会打开一个对话框。这个对话框包含一个注册视图。

<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>

字符串
对话框打开得很好。
register视图有3个文本框,绑定到register视图模型中的3个属性,它们工作得很好,还有一个“REGISTER”按钮。当按下时,这个按钮应该将用户添加到数据库中,然后关闭对话框。这是命令的外观:

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}"


当我点击“REGISTER”的时候,在Program.cs:x1c 0d1x中出现了一个错误。很明显,这个错误来自命令参数。我一定是做错了什么。任何帮助都将不胜感激!

mzmfm0qo

mzmfm0qo1#

您提供了一个RelativeSource作为参数。您忘记包含绑定,以便它解析相对源。

CommandParameter="{Binding RelativeSource={RelativeSource AncestorType={x:Type 
dialogHostAvalonia:DialogHost},Mode=FindAncestor}}"

字符串

相关问题