메신저 사용 mvvm 및 viewmodel locator.Im 버튼을 명령을 사용하거나 아무 문제없이 listview itemtap 동작을 사용합니다. 그러나 내 페이지 중 하나에서 외부 itemtemplate (리소스)를 사용해야합니다.이 템플릿에서 아무런 문제가 레이블을 바인딩 할 수 있습니다.하지만 난 캔트 단추의 바인딩 명령,이 오류 "요소에서 이름을 확인할 수 없습니다"가 표시됩니다. xamarin.forms listview의 외부 itemtemplate에서 명령 바인딩?
here is the external custom cell
<ViewCell xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:core="clr-namespace:paux;assembly=paux"
xmlns:controls="clr-namespace:paux.Controls;assembly=paux"
xmlns:xlabs="clr-namespace:XLabs.Forms.Controls;assembly=XLabs.Forms"
xmlns:base="clr-namespace:paux.Base;assembly=paux"
x:Class="paux.Controls.Cells.CustomDonemCell"> <ViewCell.View>
<Grid
BackgroundColor="{StaticResource WhiteColor}" Margin="0,0,0,0">
<Grid Grid.Column="1" Grid.Row="0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid Grid.Row="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<StackLayout
Grid.Column="1"
Margin="0,16,0,0"
Orientation="Vertical"
Spacing="0"
VerticalOptions="Start"> -
<Button Command="{Binding Path=BindingContext.mybuttonClicked, Source={x:Reference Name=mylistView}}" CommandParameter="{Binding id}" Text="My Button"/>
<controls:MultiLineLabel Text="{Binding BolumAdi}" Lines="2" VerticalOptions="Center" HorizontalOptions="Center" LineBreakMode="TailTruncation"
Margin="0,0,0,3"/>
</StackLayout>
</Grid>
</Grid>
</Grid> </ViewCell.View> </ViewCell>
이
은<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:behavior="clr-namespace:paux.Behavior;assembly=paux"
xmlns:animations="clr-namespace:paux.Animations;assembly=paux"
xmlns:triggers="clr-namespace:paux.Triggers;assembly=paux"
xmlns:effects="clr-namespace:paux.Effects;assembly=paux"
xmlns:templateSelectors="clr-namespace:paux.TemplateSelectors;assembly=paux"
xmlns:converters="clr-namespace:paux.Converters;assembly=paux"
x:Class="paux.Pages.PageOgrenciDonem" >
<ContentPage.Resources>
<ResourceDictionary>
<templateSelectors:DataTemplateSelector x:Key="ogrenciDonemTemplate" />
</ResourceDictionary>
</ContentPage.Resources>
<Grid>
<ListView
x:Name="mylistView"
CachingStrategy="RecycleElement"
ItemsSource="{Binding OgrencilikList, Mode=OneWay}"
HasUnevenRows="True"
SeparatorVisibility="None"
ItemTemplate="{StaticResource ogrenciDonemTemplate}" >
<ListView.Margin>
<OnPlatform x:TypeArguments="Thickness"
Android="8"
WinPhone="8"/>
</ListView.Margin>
</ListView>
</Grid>
</ContentPage>
을 (그것 잘 작동)와 뷰 모델 핸들러를 정의하는 당신이 가지고있는 문제가
public static readonly BindableProperty TestCommandProperty =
BindableProperty.Create("TestCommand", typeof(ICommand), typeof(CustomDonemCell), null);
public ICommand TestCommand => new Command<detay>(testclickevent);
private async void testclickevent(detay item)
{ await NavigationService.NavigateToAsync<detayviewmodel(item.id.ToString());
}
신속 재현 늦은 응답 죄송 –
를 해결하려고하기 쉬울 것입니다, 나는이 깨끗하고 간단한 프로젝트로 재생, 당신은 빨리 여기의 HTTPS 볼 수 있습니다 : //www.dropbox를. 감사합니다 유리, viewmodel에서 호출하고 싶지만 경로를 사용하려고 시도하지만 성공하지 못합니다. 경로를 제공 할 때 (Source = {x : 참조 이름 = mylistView}), com/s/0yssmmncbppwd3d/testapp.rar? dl = 0 – slayer35