Nir*_*hta 26
当您可以直接在ViewModel中直接获取所选/点击的对象时,我不确定您为什么需要在页面中提供"项目选定"或"项目点击"事件:
我认为你已经将listview与以下类型的代码绑定在一起
<ListView ItemsSource="{Binding PermitDetails}"
SelectedItem="{Binding objItemSelected, Mode=TwoWay}" x:Name="lst"
RowHeight="35" HorizontalOptions="FillAndExpand"
VerticalOptions="Fill">
Run Code Online (Sandbox Code Playgroud)
在您与页面绑定的视图模型中,您需要定义objItemSelected
下面代码中提到的属性
private Permit _ItemSelected;
public Permit objItemSelected {
get {
return _ItemSelected;
}
set {
if (_ItemSelected != value) {
_ItemSelected = value;
OnPropertyChanged ("ItemSelected");
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果要执行任何其他功能(如导航到详细信息页面),可以在执行OnPropertyChanged语句后从set属性执行此操作.
希望这可以帮助!
这是一个老问题,也许这是一个相当新的发展,但您可以使用任何控件上的行为将事件转换为 ICommand。
一个例子...
<ListView ItemsSource="{Binding Tags}"
SelectedItem="{Binding SelectedTag}">
<ListView.Behaviors>
<behaviors:EventHandlerBehavior EventName="ItemSelected">
<behaviors:InvokeCommandAction Command="{Binding SelectedTagChanged}" />
</behaviors:EventHandlerBehavior>
</ListView.Behaviors>
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<ContentView Padding="8">
<Label Text="{Binding DisplayValue}" />
</ContentView>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Run Code Online (Sandbox Code Playgroud)
在此示例中,ItemSelected 事件将映射到视图模型中的 SelectedTagChanged 命令,如下所示...
public Command SelectedTagChanged
{
get
{
return new Command(row =>
{
// do something
});
}
}
Run Code Online (Sandbox Code Playgroud)
我的场景是键盘,图像是按钮,单击一个按钮时,相关字符就会显示在标签中。
所以..
假设您有以下控件(键 1):
<Image x:Name="imgKey1"
Source="key1.png"
Aspect="AspectFit" />
Run Code Online (Sandbox Code Playgroud)
您希望当点击图像时触发“viewModel”对象的命令。我的“viewModel”具有以下属性:
public ICommand AddCharCommand { protected set; get; }
Run Code Online (Sandbox Code Playgroud)
在我的类(视图模型)构造函数中,我有:
this.AddCharCommand = new Command<string>((key) =>
{
// Add the key to the input string.
this.InputString += key;
});
Run Code Online (Sandbox Code Playgroud)
“InputString”是一个字符串属性...
因此,为了绑定视图和模式,我正在执行以下操作:
imgKey1.GestureRecognizers.Add(new TapGestureRecognizer
{
Command = viewModel.AddCharCommand,
CommandParameter = "1",
});
Run Code Online (Sandbox Code Playgroud)
我希望我能帮助你,如果有人需要什么,我可以帮助;我在这里……还有那里。杰杰
<Image Source="n1normal.png"
Aspect="AspectFit" >
<Image.GestureRecognizers>
<TapGestureRecognizer
Command="{Binding AddCharCommand}"
CommandParameter ="1"/>
</Image.GestureRecognizers>
</Image>
//-OR-
<Image Source="magnifyglass.png"
Aspect="AspectFit"
HorizontalOptions="End">
<Image.GestureRecognizers>
<TapGestureRecognizer Tapped="Search"/>
</Image.GestureRecognizers>
</Image>
//And for the Search create in your ViewModel
private void Search(object sender, EventArgs e)
{
//Your code here
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
33227 次 |
最近记录: |