我有一个奇怪的例外,编译器告诉我指定的强制转换是无效的,即使我正在做的非常简单.
我有一个ListView绑定到ObservableCollection.我的Listview内部是一个带网格的ViewCell.Xamarin.Forms版本2.3.2.127
<ListView ItemsSource="{Binding GiftCollection}">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<ViewCell.View>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="20"/>
<RowDefinition Height="20"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="40"/>
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0" Text="{Binding GiftName}"/>
<Label Grid.Row="1" Grid.Column="0" Text="{Binding GiftDescription}"/>
<Image Grid.Row="0" Grid.RowSpan="2" Grid.Column="1" Source="{Binding GiftImage}"/>
</Grid>
</ViewCell.View>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Run Code Online (Sandbox Code Playgroud)
模型:
public class GiftModel {
public string GiftName { get; set; }
public string GiftDescription { get; set; }
public ImageSource GiftImage { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
视图模型:
public class NextRoundViewModel : BaseViewModel {
public NextRoundViewModel(ApplicationModel …
Run Code Online (Sandbox Code Playgroud) 问题
我想要实现的目标基本上可以在这里看到
因此,当用户滚动到最后我想加载更多,因为我的列表非常大,我想最大化性能.
我正在尝试按如下方式实现此目的,将主集合与数据分开,以便我可以在用户到达结尾时将ItemSource设置为新的.
到目前为止我实施了什么
public class ViewModel : BaseViewModel {
public ViewModel() {
Initialize();
}
public List<List<Usermodel>> SplitedUserLists { get; set; }
//Main List that im Binding to
public List<Usermodel> ItemSourceCollection { get; set; }
public int ChunkSize { get; set; }
#endregion
private async void Initialize() {
ItemSourceCollection = await LoadList();
// Splites the list (in this case the chunk Size is 5)
SplitedScoreLists = ItemSourceCollection.Split(GetChunkSize()));
ItemSourceCollection = SplitedScoreLists[0];
}
//Gets called from CodeBehind
public void ListViewItemAppearing(ItemVisibilityEventArgs e) …
Run Code Online (Sandbox Code Playgroud) 我正在尝试列出我的Pc的逻辑驱动器并将结果添加到矢量但我得到这个奇怪的result = ;;;
.
我在这里失踪了什么?
std::vector<std::string> directory::getLogicalDrives() {
DWORD mydrives = 100;
char lpBuffer[100];
DWORD drives = GetLogicalDriveStrings(mydrives, lpBuffer);
std::vector<std::string> driveList;
for (int i = 0; i < 100; i++) {
std::string drive(3, '%c' + lpBuffer[0]); // Missing something?
driveList.push_back(drive);
}
return driveList;
}
Run Code Online (Sandbox Code Playgroud)