小编Jam*_*mes的帖子

如何为运行时排序创建表达式树?

使用Entity Framework 4,我正在尝试基于成员名称的集合实现动态排序.基本上,用户可以选择要排序的字段和排序顺序.我看过表达式树的例子,不能把它拼凑在一起.以下是一些细节:

列名集合:

public List<string> sortColumns;
sortColumns = new List<string>();

/// Example subset of video fields.  The collection will vary.
sortColumns.Add("Width");
sortColumns.Add("Height");
sortColumns.Add("Duration");
sortColumns.Add("Title");
Run Code Online (Sandbox Code Playgroud)

视频类定义如下:

public class Video
{
    public string Title { get; set; }
    public int Width { get; set; }
    public int Height { get; set; }
    public float Duration { get; set; }
    public string Filename { get; set; }
    public DateTime DateCreated { get; set; }
    .
    .
    .
}
public List<Video> Videos;
Run Code Online (Sandbox Code Playgroud)

我想要做的是通过sortColumns集合枚举以在运行时构建表达式树.此外,用户可以指定升序或降序排序,表达式树也应该处理. …

c# lambda entity-framework-4

11
推荐指数
1
解决办法
4345
查看次数

使用MVVM对集合进行WPF分组

我是WPF和MVVM的新手,所以如果这是一个愚蠢的问题,我会先请求原谅.

问题:我正在尝试使用MVVM设计模式创建一个分组的项目列表.我可以用代码来做,但更喜欢更优雅的解决方案.

细节

  • 假设我有一系列动物:马,狼,猴子,老虎,北极熊,斑马,蝙蝠等.
  • 这些动物按大洲分组:北美洲,非洲,南极洲等.

目标:在一个包装面板中,我想创建分组切换按钮.例如,对于在北美发现的每种动物,将会有一个带有ToggleButtons的"北美"GroupBox.接下来,会有一个标题为"非洲"的GroupBox,而组合框内则是非洲的所有动物.

使用MVVM设计模式,我可以绑定到ObservableCollection,并使用数据模板创建我需要的切换按钮.在我挣扎的地方,我不知道如何将动物分组.我需要的只是指导方针.任何帮助,将不胜感激.

.net c# wpf observablecollection mvvm

9
推荐指数
1
解决办法
1万
查看次数

如何使用MVVM双击列表框项来触发命令?

当用户双击列表框项目时,我正在尝试启动ICommand.此外,我正在尝试使用MVVM模式.

在这个XAML中,按键"p"完美地工作.当我双击列表框时,命令永远不会启动.我设置了一个断点来确认没有通过双击调用"PlayVideoCommand".我错过了什么或者我是否必须使用Setter(我不熟悉)?

<ListBox Name="SmallVideoPreviews" Grid.Column="1" MaxHeight="965"
    ItemsSource="{Binding BrowseVideos}" 
    ItemTemplate="{StaticResource BrowseTemplate}">
    <ListBox.InputBindings>
        <KeyBinding Key="p" 
            Command="{Binding PlayVideoCommand}"
            CommandParameter="{Binding ElementName=SmallVideoPreviews, Path=SelectedItem}"/>
        <MouseBinding Gesture="LeftDoubleClick"
            Command="{Binding PlayVideoCommand}"
            CommandParameter="{Binding ElementName=SmallVideoPreviews, Path=SelectedItem}"/>
    </ListBox.InputBindings>
</ListBox>
Run Code Online (Sandbox Code Playgroud)

双击和"p"都应该执行相同的命令.使用鼠标时,我可以看到listboxitem已被选中.我有一个预感,MouseBinding Command属性不是依赖属性,但我不知道如何确认这一点.

c# wpf dependency-properties mvvm

8
推荐指数
1
解决办法
3万
查看次数

问:VS2015社区更新3是否在Win7SP1上为Win10 Build 10586编译Windows UWP应用程序?

我有一台Windows 7 SP1(64位)的PC,我一直用它来构建Windows应用商店.我一直在使用Visual Studio 2015社区版更新2.这非常有效,直到我应用Visual Studio Update 3和最新的Windows SDK(14393).

当我将目标版本(10586)作为目标时,在尝试编译C#项目时出现以下错误:


程序文件(x86)\ MSBuild\Microsoft\VisualStudio\v14.0\AppxPackage\Microsoft.AppXPackage.Targets(2151,5):错误APPX0002:任务'GenerateAppxPackageRecipe'失败.0x7F - 无法加载MRM支持库.


(我在同一个解决方案中有一个C++ UWP项目,它可以编译成一个没有任何问题的DLL.)

我已经尝试重新安装VS2015 Update 2,重新安装VS2015 Update 3,修复Visual Studio,修复10586的Windows SDK.这些都不起作用.

我知道最新的Windows 10 SDK不支持Windows 7 SP1; 但是,这是否适用于以前的所有 Windows 10 SDK?

c# cross-compiling windows-7-x64 win-universal-app visual-studio-2015

6
推荐指数
2
解决办法
1721
查看次数

托管C++程序集可以将对象返回给C#吗?

我正在编写一个必须读取视频文件视频属性的C#应用​​程序.我发现这样做的唯一方法是使用需要C++的Microsoft Media Foundation.

到目前为止,我已经取得了一些进展:

  • 我已经创建了一个托管的C++程序集,它可以编译成DLL.
  • 我可以使用C#代码中的参数调用它.
  • 它执行并打印视频文件属性.

我接下来要做的是让DLL返回视频属性的对象(宽度,高度,持续时间等).鉴于我正在使用C++托管代码,是否有一种简单的方法来定义对象类型并使用它在C#和C++之间传递数据或者我是否必须使用Marshal类?

c# managed-c++ c++-cli

5
推荐指数
1
解决办法
2251
查看次数

如何使用 SQLite.Net 设置多个 PRAGMA?

打开与数据库的连接后,我可以设置一个 PRAGMA,但第二个总是失败。如何使用 SQLite.Net-PCL 3.1.1 设置这两个 PRAGMA?这是用于通用 Windows 平台应用程序。

    public static SQLiteConnection Open()
    {
        if (db == null)
        {
            var dbPath = Path.Combine(ApplicationData.Current.LocalFolder.Path, DatabaseFileName);
            db = new SQLiteConnection(new SQLite.Net.Platform.WinRT.SQLitePlatformWinRT(), dbPath);
            db.Execute("PRAGMA foreign_keys = ON");
            db.Execute("PRAGMA journal_mode = WAL");
        }
        return db;
    }
Run Code Online (Sandbox Code Playgroud)

在第二个执行语句之后,我立即从 SQLite 收到一个“行”异常。

请求的堆栈跟踪:

  • 在 SQLite.Net.SQLiteCommand.ExecuteNonQuery()
  • 在 SQLite.Net.SQLiteConnection.Execute(String query, Object[] args)
  • 在 SceneLocker.Models.DBConnection.Open()

编辑:添加捕获异常的屏幕截图:

被困异常

c# sqlite windows-10 uwp

4
推荐指数
1
解决办法
2991
查看次数

如何使用命名委托给List.Sort()的比较?

在我的应用程序中,我有几种比较方法.我希望用户能够选择要使用的排序方法.理想情况下,我想设置一个委托,它会根据用户的选择进行更新.这样,我可以使用List.Sort(委托)保持代码的通用性.

这是我第一次尝试使用C#委托,而且我遇到了语法错误.这是我到目前为止:

代表:

private delegate int SortVideos(VideoData x, VideoData y);
private SortVideos sortVideos;
Run Code Online (Sandbox Code Playgroud)

在类构造函数中:

sortVideos = Sorting.VideoPerformanceDescending;
Run Code Online (Sandbox Code Playgroud)

public static Sorting类中的比较方法(当我直接调用它时可以工作):

public static int VideoPerformanceDescending(VideoData x, VideoData y)
{
    *code statements*
    *return -1, 0, or 1*
}
Run Code Online (Sandbox Code Playgroud)

抱怨"一些无效参数"的语法失败:

videos.Sort(sortVideos);
Run Code Online (Sandbox Code Playgroud)

最后,我想改变"sortVideos"来指出选择的方法."videos"是VideoData类型的列表.我究竟做错了什么?

c# delegates

2
推荐指数
1
解决办法
807
查看次数