Articles of Windows

MVVM和View / ViewModel层次结构

我正在使用Windows 8的C#和XAML来开发我的第一款游戏。我仍然在学习核心概念和最佳实践,而MVVM一直是一个障碍。 我将尝试分两个部分来提问。 背景 我正在做的游戏是数独。 数独有一个包含9×9网格的棋盘。 我有三个模型 – Game , Board和Tile 。 当一个Game创build时,它会自动创build一个Board ,当Board创build时,它会创build81个(9×9)的Board 。 1.使用视图层次结构,如何创build相应的视图模型? 为了匹配模型的层次结构,我想要有一个层次的视图( BoardView包含一个包含81个TileViews )。 在XAML中,使用用户控件创build这个视图层次结构是相当容易的,但我不明白视图模型是如何创build的。 在我看到的例子中,用户控件的数据上下文经常被设置为视图模型(使用ViewModelLocator作为源),这创build了视图模型的新实例。 如果你有一个平面的视图,这似乎工作得很好,但当你有一个层次结构时,似乎也会变得混乱。 BoardView是否创build一个BoardViewModel其BoardView子进行创buildBoardViewModel ? 如果是这样, BoardViewModel如何与BoardViewModel通信? BoardViewModel可以将层次结构BoardViewModel回给BoardViewModel吗? 2.视图模型如何获取模型数据? 在iOS中,我将首先使用服务来获取预先填充数据的Game模型。 然后我会创build一个GameViewController视图控制器(负责创build视图)并将其传递给它。 在MVVM中,我认为有一个视图负责创build自己的视图模型(理想情况下使用ViewModelLocator ),但我不明白视图模型如何获得模型。 在所有我在网上find的例子中,视图模型都使用一些服务来获取自己的数据。 但我还没有遇到任何接受从更高级别的导航传递来的构造参数或参数的例子。 这是怎么做的? 我不想为我的模型使用应用程序资源或其他types的单例存储方法,因为我不这样做,但是如果我想要一次在屏幕上显示多个拼图,该怎么办? 每个GameView应该包含它自己的Game 。 BoardViewModel不仅需要引用Game模型,而且以某种方式创build的BoardViewModel (请参见问题1)需要引用属于Game模型的Board模型。 所有的Tiles 。 所有这些信息如何传递下去? 我可以在XAML中完成这么多繁重的工作,还是需要在代码中进行某种绑定或其他初始化? 唷! 我感谢您可以给予的任何build议,即使这不是一个完整的答案。 我也热衷于find任何与我自己的挑战相似的MVVM项目的例子。 万分感谢!

Windows UWP – 如何以编程方式在ContentTemplate中滚动ListView

我有一个左侧聊天列表和右侧给定聊天消息。 我想让MessageList在出现或者更新数据时滚动到底部。 我怎样才能做到这一点? 我的代码是基于微软的主/明细视图的例子: https : //github.com/Microsoft/Windows-universal-samples/blob/master/Samples/XamlMasterDetail/cs/MasterDetailPage.xaml xaml页面: <Page x:Class="MyApp.Pages.ChatsPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:MyApp.Pages" xmlns:data="using:MyApp.Model.Profile" xmlns:vm="using:MyApp.ViewModel" xmlns:util="using:MyApp.Util" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"> <Page.Transitions> <TransitionCollection> <NavigationThemeTransition /> </TransitionCollection> </Page.Transitions> <Page.Resources> <util:BoolToVisibilityConverter x:Key="BoolToVisConverter" /> <!–CollectionViewSource x:Name="Chats" Source="{x:Bind ViewModel}"/> <CollectionViewSource x:Name="Chat" Source="{Binding ChatViewModel, Source={StaticResource Chats}}"/> <CollectionViewSource x:Name="Messages" Source="{Binding MessageViewModel, Source={StaticResource Chat}}"/–> <DataTemplate x:Key="MasterListViewItemTemplate" > <Grid Margin="0,11,0,13" BorderBrush="Gray" BorderThickness="2"> <Grid.RowDefinitions> <RowDefinition Height="Auto" […]

lua车道之间的线程通信

有没有办法让lua lannel线程进行通信或从外部访问线程? 不要使用文档提供的繁忙循环。 一个简单的例子是,一个线程使用一个variables,更新它,改变它等另一个线程或主程序能够访问/获取该variables。 lua车道可以吗? 我的意思是纯粹在lua中,而不是从c / c ++。

以编程方式确定用户在Windows上最后修改文件的用户?

我一直负责在C#中编写一个简单的命令行实用程序,该实用程序将监视多个用户将访问的服务器上的目录以复制/剪切/粘贴/查看数据。 我使用FileSystemWatcher来做到这一点,但缺乏一些function。 是否有可能确定用户或至less从文件被访问/修改的位置计算机名称 ? (注意:这不一定要用FileSystemWatcher,我正在寻找任何方法来做到这一点。)

通过另一个程序给GUI应用程序提供input

我想知道的是如何给一个GUI应用程序提供input,这个应用程序是封闭的,没有任何公共的API。 为了更简洁,让我们说你打开纸牌,并希望通过一个程序来播放。 或者,甚至到基本的,你有一个button的GUI应用程序,你想通过另一个程序点击它。 我知道这个问题有点含糊,但这是我能说得最好的。 请帮助我一些编辑或一些意见,使其更具体。

IOCP AcceptEx不会在连接时创build完成

我目前正在尝试一些新的库(IOCP)进行套接字编程。 我偶然发现了AcceptExfunction来启用asynchronous连接。 正如文档所述: 与accept函数不同,AcceptEx函数使用重叠的I / O。 如果您的应用程序使用AcceptEx,它可以为相对较less的线程数量的大量客户端提供服务。 与所有重叠的Windows函数一样,可以使用Windows事件或完成端口作为完成通知机制。 但是,当客户端连接时,我不会完成任何完成。 当客户端发送数据时,我会完成。 这是我的代码: DWORD dwBytes; GUID GuidAcceptEx = WSAID_ACCEPTEX; int iResult = WSAIoctl(m_hSocket, SIO_GET_EXTENSION_FUNCTION_POINTER, &GuidAcceptEx, sizeof (GuidAcceptEx), &m_lpfnAcceptEx, sizeof (m_lpfnAcceptEx), &dwBytes, NULL, NULL); if (iResult == SOCKET_ERROR) { CloseSocket(); } 接着: WSAOVERLAPPED olOverlap; memset(&olOverlap, 0, sizeof (olOverlap)); char lpOutputBuf[1024]; int outBufLen = 1024; DWORD dwBytes; BOOL bRet […]

file_exists()返回false,但文件存在

我有一个非常奇怪的问题file_exists()。 我正在使用此function来检查是否存在2个不同的文件在同一个文件夹中。 我仔细检查过,他们都存在。 echo $relative . $url['path'] . '/' . $path['filename'] . '.jpg'; Result: ../../images/example/001-001.jpg echo $relative . $url['path'] . '/' . $path['filename'] . '.' . $path['extension']; Result: ../../images/example/001-001.PNG 现在让我们在这些上使用file_exists(): var_dump(file_exists($relative . $url['path'] . '/' . $path['filename'] . '.jpg')); Result: bool(false) var_dump(file_exists($relative . $url['path'] . '/' . $path['filename'] . '.' . $path['extension'])); Result: bool(true) 我不明白 […]

通过subprocess发送一个钩子捕获消息到控制台是可能的吗?

所以我开始一个普通的控制台程序,然后在其中创build另一个进程。 接下来,subprocess尝试在父进程拥有的控制台上写入内容。 是否有可能在这个控制台上挂钩,所以当subprocess试图写一些文本我可以做这个文本search和replace,并把它改变到控制台。 (我知道使用pipe道是可能的,但是在这里我特别要求在控制台级别执行此操作,因为如果某些程序看到它们连接到pipe道而不是控制台,则其行为会有所不同。) SetWindowsHookEx与我的问题有关吗?

git提交并通过Windows上的batch file推送

我经常做同样的任务,将改变提交给远程分支。 有时懒,我需要把一套git命令自动执行这些步骤: cd D:\wamp\www\projectName git checkout dev git add . git commit -am "made changes" git push pause 我也试过: cd D:\wamp\www\projectName call git checkout dev call git add . call git commit -am "made changes" call git push pause 和 cd D:\wamp\www\projectName git.exe checkout dev git.exe add . git.exe commit -am "made changes" git.exe push […]

如何在窗口上绘制图像?

我创build了一个窗口,使用Windows Vista上的C ++中的VS2005创build窗口()api 我的要求是在该窗口上绘制(任何格式的)图像。 我没有在这个应用程序中使用任何MFC。 请帮我一些代码片段。