C# Xamarin将ListView项目表单从ViewModel发送到对象
我有个问题。我已使用ViewModel中的ItemSource创建了一个ListView。现在,ItemSource是一个C# Xamarin将ListView项目表单从ViewModel发送到对象,c#,xamarin,xamarin.forms,xamarin.android,xamarin.ios,C#,Xamarin,Xamarin.forms,Xamarin.android,Xamarin.ios,我有个问题。我已使用ViewModel中的ItemSource创建了一个ListView。现在,ItemSource是一个可观察的集合,其中包含一些名为KnownDevice的对象。在我的列表视图中,我使用以下功能设置:itemtrapped=“rowDevice\u Clicked”: private void rowDevice_Clicked(object sender, ItemTappedEventArgs e) { ListView listView= (ListView)s
可观察的集合
,其中包含一些名为KnownDevice
的对象。在我的列表视图中,我使用以下功能设置:itemtrapped=“rowDevice\u Clicked”
:
private void rowDevice_Clicked(object sender, ItemTappedEventArgs e)
{
ListView listView= (ListView)sender;
}
但现在我需要知道点击了哪个KnownDevice
我该怎么做呢?再举一个你的知识设备的例子
public ObservableCollection<KnownDevice> ThisIsMySelectionList {get; set;}
public KnownDevice ThisIsTheSelectedDeviceFromList {get; set;}
因此,在这里,我通过限定静态App对象的project namespace.App,然后是您的属性,强制对您的应用程序进行类型转换。您可以根据需要直接获取和设置。在您单击的行设备中添加这行代码。
var device = e.Item as KnownDevice
您需要创建一个属性selectedDevice并将其绑定到listview的SelectedItem,下面是我的代码,希望对您有所帮助 ListView XAML:
<ListView HasUnevenRows="True"
ItemsSource="{Binding KnownDeviceItems}"
SelectedItem="{Binding SelectedKnownDevice}"
SeparatorVisibility="None">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
//code here for cell
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
//这里是手机代码
ViewModel属性:
private ObservableCollection<KnownDevice> knownDeviceItems;
public ObservableCollection<KnownDevice> KnownDeviceItems
{
get { return knownDeviceItems; }
set
{
knownDeviceItems = value;
OnPropertyChanged();
}
}
private KnownDevice selectedKnownDevice;
public KnownDevice SelectedKnownDevice
{
get { return selectedKnownDevice; }
set
{
selectedKnownDevice = value;
OnPropertyChanged();
}
}
私有可观察收集知识设备;
公众观察收集知识设备
{
获取{return knownDeviceItems;}
设置
{
knownDeviceItems=价值;
OnPropertyChanged();
}
}
私有知识设备选择知识设备;
公共知识设备选择知识设备
{
获取{return selectedKnownDevice;}
设置
{
selectedKnownDevice=值;
OnPropertyChanged();
}
}
谢谢好的,但是如果我想将它绑定到例如
App.selectedDevice
with as typeKnownDevice
?@A.Vreeswijk,请参阅修订后的答案以指向绑定的其他对象。当我单击一行时,代码不会在下一行中碰到我的断点:设置{((YourNamespace.App)App).YourKnownDeviceProperty=value;}
,因此所选设备保持为null
。我做错了什么?@A.Vreeswijk,可能是您的绑定上下文。如果表单/屏幕/页面/其他任何组件都没有连接到MVVM(视图模型)的BindingContext,那么它将无法工作。。。您没有提供足够的其余绑定/数据上下文。请添加您的视图模型和应用程序。SelectedDevice您可以在这里查看您的问题@A.Vreeswijk。e.Item
包含点击的项谢谢,这就是我要找的xD
<ListView HasUnevenRows="True"
ItemsSource="{Binding KnownDeviceItems}"
SelectedItem="{Binding SelectedKnownDevice}"
SeparatorVisibility="None">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
//code here for cell
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
private ObservableCollection<KnownDevice> knownDeviceItems;
public ObservableCollection<KnownDevice> KnownDeviceItems
{
get { return knownDeviceItems; }
set
{
knownDeviceItems = value;
OnPropertyChanged();
}
}
private KnownDevice selectedKnownDevice;
public KnownDevice SelectedKnownDevice
{
get { return selectedKnownDevice; }
set
{
selectedKnownDevice = value;
OnPropertyChanged();
}
}