我刚刚遇到上下文菜单的一个严重问题,我几个小时都无法解决.
为了重现这个问题,我在Visual Studio 2012中使用Windows Phone 8的应用程序模板创建了一个全新的Panorama应用程序.我通过nugget安装了Windows Phone工具包,并在绑定到Items的第一个长列表选择器的数据模板中添加了上下文菜单
<StackPanel Margin="0,-6,0,12">
<TextBlock Text="{Binding LineOne}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}" FontSize="{StaticResource PhoneFontSizeExtraLarge}"/>
<toolkit:ContextMenuService.ContextMenu>
<toolkit:ContextMenu>
<toolkit:MenuItem Header="{Binding LineOne}" Click="MenuItem_Click_1" Tag="{Binding}">
</toolkit:MenuItem>
</toolkit:ContextMenu>
</toolkit:ContextMenuService.ContextMenu>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
我将标题设置为LineOne属性以便于调试.我附上了以下事件:
private void MenuItem_Click_1(object sender, RoutedEventArgs e)
{
var itemViewModel = (ItemViewModel)((MenuItem)sender).Tag;
App.ViewModel.Items.Remove(itemViewModel);
App.ViewModel.Items.Add(new ItemViewModel { LineOne = "Test", LineTwo = "Test", LineThree = "Test" });
}
Run Code Online (Sandbox Code Playgroud)
我运行应用程序并使用上下文菜单删除第一个项目.第一个项目消失,名为Test的新项目按预期显示在列表底部.如果我持有这个新项目,则菜单项被绑定到"runtime one"(已删除的项目).
这是我可以重现错误的最简单的代码,但在我的真实应用程序中,我有相同的问题,更有意义的代码用于在不同的方法甚至不同的页面中添加和删除.我有一个命令绑定,但由于数据绑定错误,命令在错误的视图模型中使用错误的参数运行.
知道为什么会这样吗?
无论我做什么,我似乎无法让Ninject在带有Web API的ASP.NET MVC应用程序中处理请求范围内的对象.
我在做什么:
我在我的应用程序中添加了以下类:
public class SomeDisposable:IDisposable {public void Dispose(){System.Diagnostics.Debug.WriteLine("test"); }}
我在NinjectWebCommon RegisterServices方法中添加以下绑定
kernel.Bind()ToSelf()InRequestScope().;
我将一个SomeDisposable类型的对象添加到Home控制器
public HomeController(SomeDisposable some){}
我运行应用程序并在HomeController构造函数和SomeDisposable类的Dispose方法中放置一个断点.控制器接收一个对象(可能来自Ninject),页面加载但从不调用Dispose方法.
在这一点上,事情已经破碎,但我添加了一个Web API控制器,安装Ninject.WebApi打包并使用WebAPI控制器重复实验,我得到了相同的结果.
我已经阅读了很多问题,包括这一个问题 - 当超出范围时,Ninject不会调用对象上的Dispose和Ninject文档https://github.com/ninject/Ninject.Web.Common/wiki/InRequestScope,它们都表示由于Ninject.Web.Common包含了对OnePerRequestHttpModule的注册(是的,它存在),因此处理应该正常工作,但事实并非如此.我还尝试在web.config中添加PerRequest模块,并收到错误消息,说我不能在集成模式下使用此部分.
此时我迷失了.我怀疑集成模式或OWIN与此有关,但我不知道如何调试它或如何解决它.有什么建议?
我正在玩Avalonia并且我试图显示一个相当于 WinForms 的消息框MessageBox.Show()。我发现GitHub 问题正在为此请求 API,但我想知道人们在此期间在做什么。
我们是否需要实现一个像消息框一样的窗口或用户控件并通过ShowDialog显示它?
我正在试验IIS7中静态内容的集成身份验证模式.我按照本文中的说明操作:http://aspnet.4guysfromrolla.com/articles/122408-1.aspx 如果我通过登录状态允许/拒绝访问(如文章中所述),它工作正常.但是,我想基于角色允许/拒绝访问(使用内置于角色提供程序中的ASP.NET).当我为web.config中的角色"Admin"设置允许规则并拒绝所有其他用户的规则时,即使我以管理员身份登录,我也无法访问静态文件.同一文件夹包含非静态内容(aspx页面),可根据角色提供程序信息进行访问.
有任何想法吗?
我的表格看起来像这样
Users
- UserID (PK)
- UserName
- ...
UserSettings
- UserID (PK)
- Settings
Run Code Online (Sandbox Code Playgroud)
我的UserSetting实体看起来像这样
public class UserSetting
{
public UserSetting()
{
}
[Key]
[Column("UserID", TypeName ="nvarchar(128)")]
public string ID { get; set; }
[Required]
public string Settings { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我希望UserSettings的PK将User中的UserID中的FK添加到UserSettings中的UserID,因为该关系应该是1:1(如果您想知道settings字段是一个字符串,前端只是在数据库中转储为json字符串和后端不关心里面的值)
如果我手动创建数据库并添加外键并且EF对此一无所知,这可以正常工作但我决定尝试让EF为此项目创建数据库.有没有办法告诉EF创建该FK而不添加与任一实体的关系的实体属性?
看起来WinRT版本的.NET中的字符串类没有实现IEnumerable.我想知道他们为什么这样做呢?