Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Xamarin需要从同一xaml的元素中选择项作为commandParameter_C#_Xaml_Xamarin_Mvvm_Binding - Fatal编程技术网

C# Xamarin需要从同一xaml的元素中选择项作为commandParameter

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

我是xamarin的新手,我需要开发一个家庭作业应用程序

正如标题中所述,我需要在按钮中作为CommandParameter传递,从同一页面中的选择器中选择编辑项

正如在其他帖子中所述,我尝试了用RelativeSource绑定,但它不起作用,所以我来这里寻找答案,因为我找不到正确的方法

我的实际代码是

<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。现在,在上一个版本中,很高兴您已经解决了这个问题。你可以在回答和接受中分享解决方案。谢谢~