gpt4 book ai didi

c# - WP8 : LongListMultiSelector Tap Item Trigger MVVM

转载 作者:太空宇宙 更新时间:2023-11-03 16:08:46 24 4
gpt4 key购买 nike

关于 LongListMultiSelector(Windows Phone 8 工具包)的另一个问题。我想在点击 LongListMultiSelector 中的单个项目时启动命令。

XAML

  <local:LongListMultiSelector
x:Name="FileList"
ItemsSource ="{Binding CurrentFileList}"
EnforceIsSelectionEnabled="{Binding IsInSelectionMode}"
toolkit:TiltEffect.IsTiltEnabled="True"
IsSelectionEnabled="True"
ItemContainerStyle="{StaticResource FileBrowserLongListMultiSelectorStyle}"
SelectedFiles="{Binding SelectedFiles}">
<local:LongListMultiSelector.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Margin="0,0,0,20">
<Rectangle Width="80" Height="80" Fill="{StaticResource BoxCryptorGreenBrush}"/>
<StackPanel Margin="10,0">
<TextBlock Text="{Binding Name}" Style="{StaticResource PhoneTextLargeStyle}"/>
<TextBlock Text="{Binding Size}" Style="{StaticResource PhoneTextSmallStyle}"/>
</StackPanel>
<i:Interaction.Triggers>
<i:EventTrigger EventName="Tap">
<i:InvokeCommandAction Command="{Binding TapOnFileCommand}" CommandParameter="{Binding}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</StackPanel>
</DataTemplate>
</local:LongListMultiSelector.ItemTemplate>
</local:LongListMultiSelector>

在我的 ViewModel 中:

FileBrowserViewModel

// command
public RelayCommand<File> TapOnFileCommand { get; private set; }

// constructor
public FileBrowserViewModel()
{
TapOnFileCommand = new RelayCommand<File>(
TapOnFile,
(f) => true);
}

// method
private void TapOnFile(File file)
{
if (file.IsFolder)
{
_currentFileList = file.Children;
}
}

现在 TapOnFileCommand 永远不会执行。 IntelliSense 甚至可以从 XAML 文件中找到命令。我错过了什么?我正在使用 Mvvm Light,我不想在后面编写(太多)代码。

最佳答案

这是我的解决方案:

我必须在 FileViewModel(列表中的元素)中移动 TapOnFileCommand。内部的 DataContext 是单个项目本身。输出给出了相关提示。

关于c# - WP8 : LongListMultiSelector Tap Item Trigger MVVM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18274273/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com