我正在尝试VS2012 RC但是找到一个不再可用的好功能(或者如果它仍然是,请让我知道):在VS2010中,如果我知道一个文件名,例如MyFile.cs,我可以通过键入Ctrl+ 快速打开它D(或者指定的任何快捷方式)去查找工具,然后输入>of myfile.cs,然后打开文件,这样就可以更方便地对文件名进行增量搜索.在整个过程中,我根本不需要使用鼠标.
VS2012中的新快速启动工具仅搜索打开的文件,这实际上不是我想要的.VS2012是否支持此功能?是这样还是存在类似的方式,请告诉我.
我有一个WPF窗口,在我的本地系统中有一个文件的背景图像.所以XAML文件看起来像这样:
<Window.Background>
<ImageBrush ImageSource="/MYASSEMBLY;component/Resources/MyPic.png"/>
</Window.Background>
Run Code Online (Sandbox Code Playgroud)
在XAML设计器中,它实际显示了此背景图像,因此图像确实存在于MYASSEMBLY\Resources文件夹中.但是,在InitializeComponent()我启动应用程序时的函数调用中,它会抛出异常
找不到资源'resources/mypic.png'.
所以我现在完全迷失了.设计和运行时之间的目录是否不同,因此运行时中不存在?
我们正在开发一个WPF应用程序,它将同时打开许多报告(就像典型的MDI应用程序,如Excel或Visual Studio).虽然可以让这些报告的数据上下文在多个工作线程中运行,但我们仍然发现,如果打开的报告数量非常大,甚至是这些报告的呈现(基本上是在MDI环境中托管的UserControl,或者只是在主视图中的网格区域仍然会使应用程序响应较慢.
所以,我的想法是至少在主UI中有几个区域,每个区域都有其用户控件在不同的UI线程中运行.再次,想象一下视觉工作室中的典型视图,除了菜单之外,它具有文本编辑器的主要区域,存在例如解决方案资源管理器的侧面区域,以及承载例如错误列表和输出的底部区域.所以我希望这三个区域在三个UI线程中运行(但自然它们托管在一个MainView中,这是我不确定的部分).
我问,因为我知道可以在不同的UI线程中运行几个(顶级)窗口.但是有人说它不适用于用户控件.这是真的吗?如果是这样,我的场景的典型解决方案是什么,即打开的UserControl的数量真的很大,而且这些UserControl中的许多都是实时的,因此渲染它们需要大量的资源?谢谢!
正如标题所暗示的那样,设计者抛出了这个错误,这意味着设计师无法正确显示我的UserControl,这反过来意味着我无法在此UserControl中从元素到元素平滑导航以进行修改.真烦人
XXX是我的UserControl的名称,而URI YYY实际上是XXX的路径.所以我不明白它不能发现自己是资源.我搜索了这个错误,但大多数都发生在运行时.在我的情况下,当我执行它时根本不会发生.这个错误的描述真的不够解释,因为我不确定CLR中谁将文件本身作为资源加载.
另一件值得一提的是,这个错误只发生在我构建我的应用程序项目后,UserControl所在的错误.在我点击清理项目之后,设计师可以显示整个东西(但显然我无法清理因为建筑需要时间,所以在我做任何改变之前的每次项目)
我已经了解到,如果将网格行的高度ScrollViewer设置为Auto,则垂直滚动条将不会生效,因为它的实际大小ScrollViewer可能大于视线中的高度.因此,为了使滚动条工作,我应该将高度设置为固定数字或星形高度
但是,我现在有了这个要求,我有两个不同的视图驻留在两个网格行中,并且我有一个切换按钮可以在这两个视图之间切换:当显示一个视图时,另一个视图隐藏/消失.所以我定义了两行,两个高度都设置为Auto.我绑定的每一行中的布尔属性视图的可视性从我的视图模型(一个是从转换True到Visible从和其他True来Collapsed.我们的想法是,当一个视图的能见度Collapsed,网格行的高度/视图将被改变自动为0.
视图显示/隐藏工作正常.但是,在一个视图中我有一个ScrollViewer,正如我所提到的,当行高设置为时,它不起作用Auto.任何人都能告诉我如何在仍然ScrollViewer自动工作的同时满足这样的要求吗?我想我可以在代码隐藏中设置高度.但由于我使用的是MVVM,因此需要额外的通信/通知.有没有更简单的方法呢?
我有这个要求,我有一个项目集合(ObservableCollection),但我只想显示第一个项目.要求来自这样的事实:在大多数情况下,集合只包含一个项目.由于空间限制,即使集合中有多个项目,我们也要显示项目的数量,第一个项目的详细信息(与先前情况相同的演示文稿)和一个...符号表示用户有更多的项目.当鼠标悬停在UI元素上时,弹出窗口最终将显示所有项目.
我能想到的第一个解决方案(如果它们更好,请建议别人)是绑定到这个集合(但不使用ItemsControl)并定义DataTemplateSelector派生类(返回DataTemplate显示唯一的一个项目,或者DateTemplate具有...并根据集合中的项目数量弹出更多详细信息并将其用作ContentTemplateSelector.
但现在我的问题是:DataTemplate在XAML 中我的两个样子是什么样的,以便它们只显示集合中的第一个项目?显然我不能拥有ItemsControl.
更新:
现在我已经设法让它工作并同意这个问题可以关闭(我不能删除它,因为已经有一些答案).
我实际上知道如何绑定到集合中的某个项目,但这不是我困惑的地方.我觉得我应该用ContentControl一个答案建议.但我想,因为我需要绑定到整个集合(而不是单个索引项),并使用a 根据集合中的项目数DataTemplateSelector选择适当DataTemplate的.代码如下所示:
<ContentControl Content="{Binding MyCollection}"
ContentTemplateSelector="{StaticResource MyTemplateSelector}" />
Run Code Online (Sandbox Code Playgroud)
而且MyTemplateSelector我不知道如何使用它,因为没有对我的集合的引用,因为它被定义为资源而且它没有信息MyCollection.然而,事实证明它非常简单,DataTemplate可以在不知道名称或任何其他引用的情况下引用索引项.就像这样:
<DataTemplate>
<TextBlock Text="{Binding [0].PropertyName}" />
<DataTemplate />
Run Code Online (Sandbox Code Playgroud) 今天(2022年3月31日)我让自动更新功能将我的版本更新VS Code到最新版本1.66.0 Windows。此后,我的正常调试过程不再起作用:当我按F5时,调试控制面板闪烁并立即消失,没有任何其他反应。我在输出和终端窗口上找不到任何有用的错误消息。我的launch.json文件如下所示:
{
"name": "DEBUG",
"type": "python",
"request": "launch",
"program": "${workspaceFolder}\\starting.py",
"console": "integratedTerminal",
"justMyCode": false,
}
Run Code Online (Sandbox Code Playgroud)
我尝试将console上面的内容更改为externalTerminal但没有帮助。有人可以告诉我如何找出这里发生了什么吗?
干杯,
我知道我应该用谷歌搜索这样的话题,但我找不到一篇明确的文章.
我不明白的部分是,如果我在我的计算机上制作映射到同一个TFS文件夹的两个解决方案,或者我创建了两个工作区,有什么区别?在某种程度上,我理解解决方案和TFS工作区之间存在差异,因为解决方案可以完全是本地的,而不是连接到任何版本控制.但是我创建的工作区总是在我的本地计算机上有解决方案吗?如果是这样,我真的不明白为什么我应该有这样的工作空间.
我不明白的另一件事是,在我在VS中打开一个解决方案后,我仍然可以在团队资源管理器和解决方案资源管理器中切换到另一个工作区(如果我之前的问题是肯定的话,它总是在另一个解决方案中).这背后的想法是什么?我发现这种操作令人困惑.
顺便说一下,我实际上不确定工作空间是否是我要找的东西.我想要做的是:我在同一个开发分支的同一个软件项目上有多个任务.因此,我希望能够在不影响其他正在进行的任务的情况下完成一项任务.以前我不得不创建一个新的解决方案(当我需要使用不同的分支时,我实际上是这样做的),或者只是简单地将更改搁置到一个任务 - >撤消挂起的更改 - >对其他任务进行更改.我被告知工作空间是解决方案,但在阅读了一些文章之后,我仍然不知道如何使用它.
我在WPF中采用MVVM模式并且已经学会了使用Command.但在我的实现中,我CanExecute总是调用我分配给实现的委托.我的意思是如果我在委托函数中放置一个断点,它表明这个函数不断被调用.根据我的理解(以及一种自然的思维方式,但当然我可能是错的),只有当我以某种方式通知状态的变化并且CommandManager(重新)检查CanExecute属性并修改IsEnabled属性时,才会调用此委托. UI元素.
这是我对VB.NET的实现,我最初是从C#版本获得的.我注意到我需要对移植的代码进行一些更改才能进行编译.难道它是C#和VB.NET的底层是不同的?那么有人可以为我提供一个原始的VB.NET实现,或者指出我有什么问题,或者如果我正确理解Command行为会怎么做?
这是我的VB.NET版本:
Public Class CommandBase
Implements ICommand
Public Property ExecuteDelegate() As Action(Of Object)
Public Property CanExecuteDelegate() As Predicate(Of Object)
Public Sub New()
End Sub
Public Sub New(execute As Action(Of Object))
Me.New(execute, Nothing)
End Sub
Public Sub New(execute As Action(Of Object), canExecute As Predicate(Of Object))
If execute Is Nothing Then
Throw New ArgumentNullException("execute")
End If
ExecuteDelegate = execute
CanExecuteDelegate = canExecute
End Sub
Public Function CanExecute(parameter As Object) As …Run Code Online (Sandbox Code Playgroud) 我正在按照MVVM模式设计一个WPF应用程序.在一个UserControl(实际上这种情况多次发生),因为它非常复杂,例如TabControl,我想将它们分成几个子UserControl.例如,在"主"视图中,我们称之为MainUC,我有一个TabControl,它有两个TabItem.由于两者TabItem实际上都包含许多UI元素,我设计了两个UserControl,SubUCA和SubUCB,因此MainUC的XAML如下所示:
<TabControl Name="mainUC" Grid.Row="0" >
<TabItem Header="Sub UC A" Name="SubUC1">
<local:SubUCA />
</TabItem>
<TabItem Header="Sub UC B" Name="SubUC2">
<local:SubUCB />
</TabItem>
</TabControl >
Run Code Online (Sandbox Code Playgroud)
但现在我的问题是:我应该如何为这些安排ViewModel UserControl?我目前使用的一种方法是只有一个ViewModel类(称为MainUC_VM),而DataContextMainUC设置为此类实例(注意我没有使用依赖注入,所以我只是在代码隐藏中创建一个实例of MainUC).但是就这样,MainUC_VM类会变得非常复杂,就像MainUC一样.所以我也想把ViewModel分成几个类.例如,在MainUC_VM类中,我可以拥有这样的属性
public SubUCA_VM SubVM1 { get; set; }
public SubUCB_VM SubVM2 { get; set; }
Run Code Online (Sandbox Code Playgroud)
但是,由于我没有使用依赖注入(因为我们的团队还没决定使用它),我如何才能使DataContextSubVM1和SubVM2分别成为SubUC1和SubUC2?我无法在SubUCA和SubUCB的代码隐藏中实例化一个,因为它们与MainUC_VM中的属性成员不同.
我能想到的一些方法是,1)使SubUCA_VM和SubUCB_VM类单例(这类似于依赖注入的相同行为,例如默认使用MEF),或2)使用EvengAggregator来通知对象的实例化.但在我看来,无论哪种方式似乎都会增加不必要的复杂性.为了使用MVVM,这是否意味着依赖注入几乎是必须的?有没有办法在不使用DI的情况下实现它?
wpf ×7
mvvm ×2
xaml ×2
autosize ×1
data-binding ×1
datatemplate ×1
designer ×1
icommand ×1
python ×1
resources ×1
scrollviewer ×1
tfs ×1
ui-thread ×1
uwp-xaml ×1
vb.net ×1