我有一个绑定到集合的ListView,即我的情况是LOGIN_REDIRECT_URL = 'app'
。问题是,当我尝试将SelectedItem绑定到commandparameter时,有时会给出类型转换异常,表明无法从Windows.UI.TappedEventArgs到InnerGridItems进行类型转换。 (WPF和UWP的概念相同,有一个Click事件,因此我添加了WPF标签)。请帮忙。
Xaml:
List<InnerGridItems>
这是我的模特班
InnerGridItems.cs
<ListView Margin="0,10,0" x:Name="lstInnerItems" Grid.Row="1"
ItemsSource="{Binding InnerBarCodeItems,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
Selectionmode="Single"
HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch"
Tag="{Binding ElementName=Imgflash}">
<Interactivity:Interaction.Behaviors>
<Core:EventTriggerBehavior EventName="Tapped">
<Core:InvokeCommandaction
Command="{Binding ListSelectionChangedCommand,Mode=OneWay}"
commandparameter="{Binding ElementName=lstInnerItems,Path=SelectedItem}"></Core:InvokeCommandaction>
</Core:EventTriggerBehavior>
</Interactivity:Interaction.Behaviors>
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<RadioButton x:Name="rbnEnumerated" GroupName="A"
IsChecked="{Binding IsChecked,UpdateSourceTrigger=PropertyChanged}">
<Interactivity:Interaction.Behaviors>
<Core:DataTriggerBehavior Binding="{Binding IsVisible,Mode=TwoWay}" Value="False">
<Core:ChangePropertyaction TargetObject="{Binding ElementName=rbnEnumerated}" PropertyName="Visibility" Value="Collapsed" />
</Core:DataTriggerBehavior>
<Core:DataTriggerBehavior Binding="{Binding IsVisible,Mode=TwoWay}" Value="True">
<Core:ChangePropertyaction TargetObject="{Binding ElementName=rbnEnumerated}" PropertyName="Visibility" Value="Visible" />
</Core:DataTriggerBehavior>
</Interactivity:Interaction.Behaviors>
</RadioButton>
<TextBlock Text="{Binding SerialNumber}" Margin="10,0"></TextBlock>
<TextBlock Margin="14,0">
<Run Text="("></Run>
<Run Text="{Binding SerialPort}"></Run>
<Run Text=")"></Run>
</TextBlock>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
这是我的ICommand
public class InnerGridItems : BindableBaseThreadSafe
{
private string _serialNumber = "N/A";
public string SerialNumber
{
get => _serialNumber;
set => Set(ref _serialNumber,value);
}
private string _serialPort = "N/A";
public string SerialPort
{
get => _serialPort;
set => Set(ref _serialPort,value);
}
private bool _isChecked;
public bool IsChecked
{
get => _isChecked;
set => Set(ref _isChecked,value);
}
private MemoryStream _flashedBarCodeImage;
public MemoryStream flashedBarCodeImage
{
get => _flashedBarCodeImage;
set => Set(ref _flashedBarCodeImage,value);
}
private bool _isVisisble = true;
public bool IsVisible
{
get => _isVisisble;
set => Set(ref _isVisisble,value);
}
}