在Visual Studio 2010中,如何禁用XAML文件中的大纲?或者甚至更好地完全禁用所有内容的概述.
每当我将鼠标从编辑器窗格移动到解决方案资源管理器时,鼠标就会越过那个愚蠢的概述小部件并导致一半编辑器开始闪烁,这是有史以来最烦人的事情.
我被迫在WPF应用程序中使用View First MVVM,我很难看到如何使它优雅地工作.
问题的根源在于嵌套UserControls.在MVVM架构中,每个都UserControl需要将其视图模型分配给它DataContext,这使得绑定表达式保持简单,而且这也是WPF实例化通过a生成的任何视图的方式DataTemplate.
但是,如果子项UserControl具有父项需要绑定到其自己的viewmodel的依赖项属性,则子项UserControl将其DataContext设置为其自己的viewmodel这一事实意味着父XAML文件中的"隐式路径"绑定将解析为子视图模型父母的.
要解决这个UserControl问题,应用程序中每个父项的每个父项都需要默认使用显式命名绑定(这是详细的,丑陋的和错误的),或者必须知道特定控件是否将其DataContext设置为自己的viewmodel是否使用适当的绑定语法(同样是errorprone,并且是对基本封装的重大违反).
经过几天的研究,我没有遇到过这个问题的一半解决方案.我遇到的最接近解决方案的是将UserControl'sviewmodel 设置为UserControl(最顶层Grid或其他)的内部元素,这仍然会让您在尝试将UserControl自身的属性绑定到自己的viewmodel时遇到问题!(ElementName绑定在这种情况下不起作用,因为绑定将在指定元素之前声明,并且viewmodel分配给它DataContext).
我怀疑没有其他人遇到这个问题的原因是他们要么使用viewmodel第一个没有这个问题的MVVM,要么他们使用视图第一个MVVM和一个依赖注入实现来解决这个问题.
有没有人为此提供干净的解决方案?
更新:
请求的示例代码.
<!-- MainWindow.xaml -->
<Window x:Class="UiInteraction.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:UiInteraction"
Title="MainWindow" Height="350" Width="525"
x:Name="_this">
<Window.DataContext>
<local:MainWindowVm/>
</Window.DataContext>
<StackPanel>
<local:UserControl6 Text="{Binding MainWindowVmString1}"/>
</StackPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)
namespace UiInteraction
{
// MainWindow viewmodel.
class MainWindowVm
{
public string MainWindowVmString1
{
get { return "MainWindowVm.String1"; …Run Code Online (Sandbox Code Playgroud) 在C++中输出浮点数的最优雅方法是什么,没有科学记数法或尾随零?
float a = 0.000001f;
float b = 0.1f;
cout << "a: " << a << endl; // 1e-006 terrible, don't want sci notation.
cout << "b: " << b << endl; // 0.1 ok.
cout << fixed << setprecision(6);
cout << "a: " << a << endl; // 0.000001 ok.
cout << "b: " << b << endl; // 0.100000 terrible, don't want trailing zeros.
Run Code Online (Sandbox Code Playgroud) 如何定义一个类型,该类型公开对可以由类型本身在内部操作的集合的只读访问?
我正在寻找一种具有最少样板文件的方法。
更新
感谢到目前为止的答案,但这应该能让我更清楚地了解我在寻找什么。
export class Item {
public Prop1: number;
public Prop2: string;
}
export class Container {
public get Items(): ??? {
// Return something that enables the client to access and modify individual items but _not_ change the contents
// of the _items array, ideally without just copying the entire array.
}
private _items: Item[] = [];
}
Run Code Online (Sandbox Code Playgroud) 如果我在SVN中进行更新导致冲突,SVN为我提供了一系列处理每个文件冲突的选项,包括接受文件,启动外部合并程序或推迟冲突解决.
如果我选择推迟解决冲突,我该如何让SVN重复冲突解决过程.具体来说,如何让SVN重新选择接受文件或启动外部合并工具?
[更新]回应Thomas和Skippy的回复.
谢谢你的回答.因此,SVN似乎没有重新运行冲突解决过程的命令.我个人觉得很糟糕.
SVN冲突解决过程的一个选择是选择我希望保留的文件.在SVN中执行此操作具有以下优点:SVN本身然后处理复制和删除适当的文件,这排除了用户直接混乱文件系统并减少出错的可能性的需要.
SVN冲突解决过程提供的另一个选择是启动外部合并编辑器的选项.可以在SVN配置文件中配置已启动的编辑器及其设置方式.这非常方便,因为这意味着用户无需手动将三个文件加载到外部合并编辑器中.
除此之外,它还没有被编码是否有任何理由SVN不提供重启冲突解决过程的工具?(也许通过仅使用路径参数调用svn resolve).这样做的另一个原因是,它可以提供解析一个文件的选择,或者在工作副本或工作副本中的子树上递归递归的功能.
如果我认为我对C++一无所知,那就是你不能通过返回类型重载函数.
那么有人能解释一下这里发生了什么吗?
class A { public: typedef int _foo; };
class B {};
template<class T>
typename T::_foo Foo(int)
{
cout << "Foo(int)\n"; return typename T::_foo();
}
template<class T>
typename T Foo(char)
{
cout << "Foo(char)\n"; return typename T();
}
int main()
{
Foo<A>(0); // Writes "Foo(int)", as expected.
Foo<B>(0); // Writes "Foo(char), expected error unable to compile template.
return 0;
}
Run Code Online (Sandbox Code Playgroud)
有两个类A和B. A定义typedef _foo,B不定义.函数模板Foo,Foo(int)和Foo(char)有两个重载.Foo(int)返回T :: _ foo,Foo(char)返回T.
然后调用Foo(0)两次.这与Foo(int)完全匹配,所以我希望Foo <A>(0)编译好,而Foo <B>(0)编译失败,因为B没有定义模板中使用的类型_foo.
实际发生的是Foo <B>(0)完全忽略Foo(int)并实例化Foo(char).但是通过正常的重载决策规则,Foo(0)显然是Foo(int)的精确匹配,并且使Foo(char)成为更可行的匹配的唯一因素是不应该考虑的返回类型.
要验证它是影响重载决策的返回值,只需添加:
template<class T>
void Bar(int) { typename T::_foo …Run Code Online (Sandbox Code Playgroud) 阅读有关 Docker 和容器化应用程序开发的 Microsoft 文档,它没有清楚地描述您可以做什么和不能做什么。
作为开发人员,容器的一个引人注目的用例是能够在容器内拥有我的实际开发环境,这样当我需要在不同的物理机器上处理特定项目时,我只需从容器注册表安装必要的容器即可然后我就走了。
Microsoft 文档似乎暗示,但实际上并没有明确说明,这对于 Dotnet Core 应用程序确实是可能的,但没有提及这对于哪些其他应用程序类型(如果有)是可能的。
举一个具体的例子。我想使用 Xamarin 构建 Android 应用程序。我不想全局安装特定版本的 Android SDK,也不想安装多个全局 Android SDK 以便在处理不同项目时在它们之间进行切换。相反,我想在 Docker 容器中使用 Android 构建环境。
这可能吗?如果是这样,是否有任何文档描述我如何解决这个问题?
如果这是不可能的,并且作为开发人员,我仍然必须为我在本地工作的每种类型的项目、在我使用的每台开发机器上安装完整的构建环境,那么作为开发人员,我真的不明白 Docker 对我有什么用处。在这种情况下,它似乎主要是一个 ProdOps 工具。
当我使用 Typescript 创建新的 Node 项目时,VsCode 自动导入建议根本不起作用。
重现步骤:
创建工作区目录。
运行npm init指定main.ts为入口点文件。
导入 typescript clinpm i typescript
创建 tsconfig.json.\node_modules\.bin\tsc --init
创建 main.ts 包含console.log('Running');
转译使用.\node_modules\.bin\tsc -w
Debug通过单击VsCode 并使用默认的 Nodejs 启动配置来运行。
导入库,例如 Rxjs 导入 typescript clinpm i rxjs
结果:
在 main.ts 中尝试使用任何 Rxjs 类型Observable、BehaviourSubject全局运算符from of sequenceEqual等都不会产生任何导入帮助。
我已阅读 VsCode Typescript 文档,没有任何迹象表明出了什么问题。https://code.visualstudio.com/docs/languages/typescript
我尝试在 tsconfig.json 中显式设置include和exclude目录,但这也没有效果。
我需要在 tsconfig 中手动设置一些模块解析选项吗?
我不知道,我不知道为什么这不起作用。
更新:
我设法通过指定使 VsCode 自动导入工作
"typeRoots": [ …Run Code Online (Sandbox Code Playgroud) 我有三个简单的关系。TableB和TableC既参考TableA,TableC也参考TableB。
我发现无法在 SQL Server 中以通过约束强制执行参照完整性的方式对此进行建模,但这也允许从任何实体中删除记录,而无需复杂且低效的基于触发器的参照完整性检查,或手动删除相关实体正确的顺序。
这是我的架构。
create table TableA (
Id int identity not null,
constraint P_TableA_Id primary key (Id)
)
create table TableB (
Id int identity not null,
constraint P_TableB_Id primary key (Id),
ARef int,
constraint F_TableB_ARef foreign key (ARef) references TableA(Id) on delete cascade
)
create table TableC (
Id int identity not null,
constraint P_TableC_Id primary key (Id),
ARef int,
constraint F_TableC_ARef foreign key (ARef) references …Run Code Online (Sandbox Code Playgroud) 作为迁移的一部分,我需要更新数据库中的一些数据。
MigrationBuilder 有一个 Update 方法,它使我能够提供一组键和值来更新表。但是,如何在迁移过程中查询数据库以确定需要更新的值的键?