英文:
I am trying to implement a ICommand on a tableselection in C#/MAUI, but it seems that I never enter the command when debugging
问题
抱歉,我只会翻译代码部分:
public ICommand AddNewShotComand { set; get; }
public MainPage()
{
InitializeComponent();
MyInit();
AddNewShotComand = new Command(AddNewShotCmd);
}
public void AddNewShotCmd()
{
var a = 5;
}
请注意,你提供的代码中存在一些拼写错误,"AddNewShotComand" 应该是 "AddNewShotCommand",以及 "MyInit()" 方法没有在提供的代码中定义。这些错误可能会影响代码的执行。
英文:
I am sorry or asking this question, I know there are similar questions in this community that I tried that did not ix my problem. Essentially I have a view, called MainPage.xaml, which contains this code:
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:VideoDemos.Views"
x:Class="VideoDemos.Views.MainPage"
Title="Home Page">
...
<TableView Intent="Settings">
<TableRoot>
<TableSection>
<ImageCell Text="Add new shot"
Detail="Add a new shot, the starting shot is a serve"
ImageSource="Resources/Images/add_icon_3.png"
Command="{Binding AddNewShotComand}"
/>
</TableSection>
</TableView>
...
</ContentPage>
public ICommand AddNewShotComand { set; get; }
public MainPage()
{
InitializeComponent();
MyInit();
AddNewShotComand = new Command(AddNewShotCmd);
}
public void AddNewShotCmd()
{
var a = 5;
}
I have var a = 5 just as a debug point, however, I never hit this point.
I've tried to iterate the steps o this link rom microsot I am very conused, I've gone step by step ollowing this link rom microsot https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/data-binding/commanding?view=net-maui-7.0
I've tried to change the tableview intent to the our parameters, as a previous stackoverlow seemed to suggest that overlap may have ben the problem, but this did not ix anything or me.
I've tried to copy/paste directly rom the link to no avail.
I don't really know what the problem might be.
Any help would be great!
答案1
得分: 0
绑定不起作用,如果您没有定义BindingContext
。在您的情况下,因为您要绑定的是代码后台的属性,而不是单独的 VM,您可以这样做:
public MainPage()
{
InitializeComponent();
MyInit();
AddNewShotComand = new Command(AddNewShotCmd);
BindingContext = this;
}
英文:
bindings don't work if you don't define a BindingContext
. In your case, since you are binding to properties in your code behind and not a separate VM, you would do this
public MainPage()
{
InitializeComponent();
MyInit();
AddNewShotComand = new Command(AddNewShotCmd);
BindingContext = this;
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论