C# Xamarin需要从同一xaml的元素中选择项作为commandParameter
我是xamarin的新手,我需要开发一个家庭作业应用程序 正如标题中所述,我需要在按钮中作为CommandParameter传递,从同一页面中的选择器中选择编辑项 正如在其他帖子中所述,我尝试了用RelativeSource绑定,但它不起作用,所以我来这里寻找答案,因为我找不到正确的方法 我的实际代码是C# Xamarin需要从同一xaml的元素中选择项作为commandParameter,c#,xaml,xamarin,mvvm,binding,C#,Xaml,Xamarin,Mvvm,Binding,我是xamarin的新手,我需要开发一个家庭作业应用程序 正如标题中所述,我需要在按钮中作为CommandParameter传递,从同一页面中的选择器中选择编辑项 正如在其他帖子中所述,我尝试了用RelativeSource绑定,但它不起作用,所以我来这里寻找答案,因为我找不到正确的方法 我的实际代码是 <StackLayout Spacing="20" Padding="15"> <Label Text="Text:" FontSize="Medium" />
<StackLayout Spacing="20" Padding="15">
<Label Text="Text:" FontSize="Medium" />
<Label Text="{Binding Material.Name}" d:Text="Item name" FontSize="Small"/>
<Label Text="Description:" FontSize="Medium" />
<Label Text="{Binding Material.Description}" d:Text="Item description" FontSize="Small"/>
<Picker x:Name="PocketSelector"
Title="--Select--"
ItemsSource="{Binding Pockets}"
ItemDisplayBinding="{Binding PocketName}"
SelectedItem="SelectedPocketName"/>
<Button x:Name="AddToButton"
Text="Add To"
Command="{Binding AddToPocketCommand}"
CommandParameter="{Binding Source={RelativeSource Picker}, Path=Picker.SelectedItem}"/>
</StackLayout>
我目前正在使用MVVM模式
我不需要在ViewModel或类似的东西中进行更改,只需要在我的按钮中将selectedItem元素作为参数传递
提前感谢下面的代码应该可以正常工作
<StackLayout Spacing="20" Padding="15">
<Label Text="Text:" FontSize="Medium" />
<Label Text="{Binding Material.Name}" d:Text="Item name" FontSize="Small"/>
<Label Text="Description:" FontSize="Medium" />
<Label Text="{Binding Material.Description}" d:Text="Item description" FontSize="Small"/>
<Picker x:Name="PocketSelector"
Title="--Select--"
ItemsSource="{Binding Pockets}"
ItemDisplayBinding="{Binding PocketName}"
SelectedItem="SelectedPocketName"/>
<Button x:Name="AddToButton"
Text="Add To"
Command="{Binding AddToPocketCommand}"
CommandParameter="{Binding SelectedItem, Source={x:Reference PocketSelector}}"/>
</StackLayout>
您的选取者的名字是PocketSelector
,而不是Picker
谢谢。我把它和相对资源改成了x:Reference。现在我知道相对资源对Xamarin不起作用了。你为什么这么认为?我有xamarin.forms 4.2。现在,在上一个版本中,很高兴您已经解决了这个问题。你可以在回答和接受中分享解决方案。谢谢~