这个问题几乎说明了一切.
我有一个窗口,并尝试使用完整的命名空间将DataContext设置为ViewModel,但我似乎做错了.
<Window x:Class="BuildAssistantUI.BuildAssistantWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
DataContext="BuildAssistantUI.ViewModels.MainViewModel">
Run Code Online (Sandbox Code Playgroud) 我很清楚这些模式中的每一个是如何工作的,并且知道它们之间的一些细微差别,但它们真的是彼此之间的差异吗?
在我看来,Presenter,Presentation Model,ViewModel和Controller本质上是相同的概念.
为什么我不能将所有这些概念归类为控制器?我觉得它可能会大大简化整个想法.
任何人都可以清楚地描述他们的差异吗?
我想澄清一点,我确实理解模式是如何工作的,并且已经在一种技术或另一种技术中实现了大部分模式.我真正想要的是某人对这些模式之一的体验,以及为什么他们不会将他们的ViewModel视为一个控制器.
我会给出一些声望点,但我正在寻找一个非常好的答案.
model-view-controller mvp design-patterns presentation-model mvvm
我已经四处寻找答案,但潜在的重复更关注的是演示而不是互动.
我有一个基本的列表框,每个项目的内容都是一个简单的字符串.
ListBox本身被拉伸以填充它的网格容器,但每个ListBoxItem的hitarea不会镜像ListBox宽度.看起来每个项目的hitarea(指针接触区域)只是文本内容的宽度.无论文本大小如何,如何将这种拉伸完全展开.
我已将HorizontalContentAlignment设置为Stretch,但这并不能解决我的问题.我唯一的另一个猜测是内容实际上是拉伸,但背景是不可见的,所以不捕捉鼠标指针.
<ListBox
Grid.Row="1"
x:Name="ProjectsListBox"
DisplayMemberPath="Name"
ItemsSource="{Binding Path=Projects}"
SelectedItem="{Binding Path=SelectedProject}"
HorizontalContentAlignment="Stretch"/>
Run Code Online (Sandbox Code Playgroud)
XAML非常直接.如果我将鼠标悬停在其中一个项目中的文本上,则该项目的整个宽度将变为活动状态.我想我只需要知道如何创建一个看不见的交互式背景.
我需要定义一个没有已知名称的swagger属性.
{
"type": "object",
"properties": {
"?????": {
"type": "array",
"items": { "$ref": "#/definitions/ModelRelease" }
}
}
Run Code Online (Sandbox Code Playgroud)
????? 我定义的一部分是一个未知值的整数.有任何想法吗?
我似乎无法为我的应用程序中的所有窗口设置默认背景颜色.有谁知道如何做到这一点?
目前我正在我的App.xaml文件中设置一个主题.
<Application>
<Application.Resources>
<ResourceDictionary Source="Themes/SomeTheme.xaml" />
Run Code Online (Sandbox Code Playgroud)
这基本上是整个应用程序的样式
在SomeTheme.xaml我的内部尝试为我的所有窗口设置默认颜色.
<SolidColorBrush Color="{DynamicResource MainColor}" x:Key="CommonBackgroundBrush" />
<Style TargetType="{x:Type Window}">
<Setter Property="Background" Value="{DynamicResource CommonBackgroundBrush}" />
</Style>
Run Code Online (Sandbox Code Playgroud)
对于类型的导数,此语法完全被忽略Window.
有没有办法强制风格适用于所有衍生品Window?
这种语法的奇怪之处在于它实际上在VS设计预览窗口中显示了正确的颜色.
这有点怪异.
我在想某个地方必须有一个设置可以解释为什么会这样.
在我们的解决方案中,大约有50个不同的项目 在大多数情况下,库以命名空间OurCompany开头.
我们有OurComany.This.That和OurCompany.Foo.Bar ...等
外部库与命名空间之间存在命名空间/类冲突
OurCompany.Foo.Bar
Run Code Online (Sandbox Code Playgroud)
还有一个合格的班级......
OurCompany.Some.Location.Foo
Run Code Online (Sandbox Code Playgroud)
错误是这样的:
Error 75 The type or namespace name 'MethodName' does not exist in the
namespace 'OurCompany.Foo' (are you missing an assembly reference?)
Run Code Online (Sandbox Code Playgroud)
当我完全限定"OurCompany"命名空间下的任何内容时,甚至Resharper都会给我一个"Qualifier is redundant"消息.
OurCompany.Some.Location.Foo.MethodName();
//OurCompany is redundant
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚到底是做什么的.解决方案非常庞大,因此试图对问题进行逆向工程并不是很好的解决方案.
我应该说如果我用...
Some.Location.Foo.MethodName(); //Leaving out OurCompany
Run Code Online (Sandbox Code Playgroud)
...... Resharper消息消失了.
我个人不能忍受区域标签,但显然它们对于组织代码具有广泛的吸引力,所以我想测试其他MS开发人员对这个想法的水温.
我个人的感觉是,任何简化代码的愚蠢技巧只会鼓励可怕的编码行为,例如缺乏凝聚力,意图不明确以及编码标准差或不完整.
一位程序员告诉我,代码区域通过明确另一个程序员应该放置他或她的贡献的位置来帮助鼓励编码标准.
但是,说实话,这对我来说听起来像是一堆马粪.如果你有一个标准,程序员的工作就是了解那个标准是什么......你不需要在每个单独的类文件中定义它.
而且,打开文件时,没有什么比让所有代码都崩溃更烦人了.我知道cntrl + M,L会打开所有内容,但是你有一个可怕的"哈希区域定义"打开和关闭行来阅读.
他们只是很烦人.
我最快速的编码理念是所有程序员都应该努力创建清晰,简洁和有凝聚力的代码.区域标签只会产生噪音和冗余意图.
区域标签在经过深思熟虑和有意思的课程中没有实际意义.
他们似乎对我有意义的唯一地方是自动生成的代码,因为除了个人好奇之外你永远不应该阅读它.
wpf ×3
xaml ×3
.net ×2
mvvm ×2
c# ×1
coding-style ×1
listbox ×1
listboxitem ×1
mvp ×1
namespaces ×1
qualifiers ×1
region ×1
swagger ×1
themes ×1
window ×1