Xamarin을 처음 사용하며 현재 아래의 문제에 직면 해있는 솔루션에서 작업 중입니다. 클래스 A가 내 Model 클래스이고 클래스 B가 내 viewModel입니다. 모델 클래스Observablecollection 개체에 대해 Xamarin 명령이 작동하지 않습니다.
Class A : INotifyPropertyChanged
{
public string sampleprop { get; set; }
public event PropertyChangedEventHandler PropertyChanged;
public virtual void OnPropertyChanged(string propertyName)
{
if (PropertyChanged == null)
return;
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
내가 메인 뷰 페이지 내 바인딩 컨텍스트로 클래스 B를 할당 클래스 B
Class B
{
public Command<string> CallCommand { get; set; }
public ObservableCollection<A> AobjectsCollection { get; set; }
public B()
{
AobjectsCollection = new ObservableCollection<A>();
CallCommand = new Command<string>((string arg) =>
DoMakeCall(arg));
}
public void DoMakeCall(string phNumber)
{
string s = phNumber;
}
}
에서 관찰 할 수있는 컬렉션으로 클래스 A의 객체를 생성하고있다.
public partial class Mainview : ContentPage
{
InitializeComponent();
BindingContext = new B();
}
기본보기 (xaml)에서 ClassB의 관찰 가능한 컬렉션 속성을 사용하여 목록보기를 만들고 있습니다. 이제 메인 페이지에서 버튼 (btnClick)를 클릭
<ListView x:Name="MessagesListView"
ItemsSource="{Binding AobjectsCollection }"
HasUnevenRows="True" >
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell >
<ViewCell.View>
<Button x:Name="btnClick" Text="ClickMe"
Command="{Binding CallCommand}"
CommandParameter="sampleprop"/>
</ViewCell.View>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
내 뷰 모델의 명령을 호출하고 내 방법 DoMakeCall (문자열들)을 실행하지 않습니다.
아무도이 코드의 잘못된 점을 이해할 수 있도록 도와 주시겠습니까? 이 시나리오를 어떻게 달성 할 수 있습니까?
내 Command 속성은 VM 클래스가 아니라 Model 클래스에 있습니다. 내가 알아 내야 할 것은 컨텍스트를 올바르게 설정하여 올바르게 작동시키는 것입니다. 나는 릴레이 명령을 사용하고 싶지 않다.
가능한 중복 https://stackoverflow.com/questions/31812035/relaycommand-parameter -passing-in-xamarin) – Unlockedluca