(来自Prism V2 StockTrader示例应用程序中的StockTraderRIBootstrapper.cs文件)
这有什么区别:
ShellPresenter presenter = new ShellPresenter();
Run Code Online (Sandbox Code Playgroud)
还有这个:
ShellPresenter presenter = Container.Resolve<ShellPresenter>();
Run Code Online (Sandbox Code Playgroud)
这样的事情:
Container.RegisterType<IShellPresenter, ShellPresenter>();
Run Code Online (Sandbox Code Playgroud)
但发现它无处可寻.那么容器如何才能了解这些类型呢?它们可以解决它们吗?我在自己的项目中重建了这个并获得"依赖失败的解决方案"错误,那么我在哪里需要注册这个依赖呢?
这里的任何方向/讨论都会有所帮助.
所以,在bootstrapper中,当我注册Shell本身时:
protected override void ConfigureContainer()
{
Container.RegisterType<IShellView, Shell>();
base.ConfigureContainer();
}
Run Code Online (Sandbox Code Playgroud)
然后Container可以解析ShellPresenter类型.那么当我注册Shell类型时,ShellPresenter类型是如何注册的?
好的,所以事实证明你不必注册你想要解决的类型,但你必须注册传递给你想要解决的类型的构造函数的参数(接口)类型,即因为我注入IShellView接口进入我的ShellPresenter的构造函数,我需要注册IShellView类型而不是IShellPresenter类型:
public ShellPresenter(IShellView view) ...
Run Code Online (Sandbox Code Playgroud)
我通过尝试解决类型测试器测试了这个:
Tester tester = Container.Resolve<Tester>();
Run Code Online (Sandbox Code Playgroud)
只要我将SomeClass注入其构造函数:
public Tester(ISomeClass someClass)
Run Code Online (Sandbox Code Playgroud)
在我用容器注册SomeClass之前,我得到了未解决的依赖错误:
Container.RegisterType<ISomeClass, SomeClass>();
Run Code Online (Sandbox Code Playgroud)
然后它工作.这和教育一样令人惊讶.需要沉入其中.我要去喝杯咖啡并考虑一下.
如果有人能详细说明为什么会这样,那将非常感激.
假设我有一个绑定到ViewModel A的View,它有一个可观察的集合Customers.
这个MVVM模式的一个优点是我还可以将View绑定到ViewModel B,后者用不同的数据填充它.
但是如果在我的View转换器转换器中显示我的客户,例如我有一个接受合同的"ContractToCustomerConverter"并返回要显示的相应客户.
这个问题是转换器存在于MVVM模式之外,因此不知道我的ViewModel有另一个客户来源.
(我在看到MVVM模板工具包下载附带的WPF演示应用程序中使用转换器后遇到了这些问题,解压后请参阅"Messenger Sample".)
在Eclipse中,我有一个类大纲视图,它向我展示了我的班级成员:

我安装了NetBeans 6.9.1,但找不到一个窗口,显示我正在处理的类中的方法列表等.我在哪里可以找到这个?

我学到的一个CSS规则是你应该使用相对"em"字体大小的单位而不是绝对的"pt".一般的想法是将body标签中的font-size设置为例如"94%",然后将所有其他元素设置为这样的"em"大小.理由是:
然而,当使用"em"而不是"pt"时,我经常遇到如下问题,其中具有font-size的元素被嵌入到具有font-size的另一个元素中并因此变得很小(在一个词汇单词下面的情况下是.8的.8和另一个是1.2的.8).
<html>
<head>
<style type="text/css">
body {
font-size: 94%;
}
p {
font-size: .8em;
}
li {
font-size: 1.2em;
}
.vocabulary {
font-size: .8em;
}
</style>
</head>
<body>
<p>This is an <span class="vocabulary">egregious</span> test.</p>
<ul>
<li>This is in a <span class="vocabulary">superb</span> list.</li>
</ul>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
当然,在非常简单,直接的HTML网站中,这没有问题,但在现实世界中,您可能甚至没有制作导入的样式表,并且在其他控件中嵌入了控件的动态网站,所有这些都可能输出HTML在线样式,我发现有"em"单位字体大小的网站有时无法维护,控制字体大小的方法是将所有内容转换为硬"px"大小.
另外,我刚检查了四个主浏览器,每个浏览器都有热键,可以增加和减少"pt"样式字体的大小.
所以这是我的问题:
我在SQL Server CE中创建了一个表,并意识到它不支持varchar.
仔细研究一下,我发现"不支持非Unicode文本列(varchar,char,text)和smallmoney;虽然支持nvarchar,nchar,ntext和money",如MSDN所述.
这是真的?这究竟是为什么?似乎一个紧凑的数据库将支持需要较少字节存储的数据类型......我假设它需要更多空间来保存Unicode字符.
这背后的原因是什么?
在综合申请指南中涉及以下内容.
我知道=>是一个lambda但是()是什么意思?
还有其他一些例子吗?
它叫什么,所以我可以搜索它?
this.regionViewRegistry.RegisterViewWithRegion(RegionNames.SelectionRegion
, () => this.container.Resolve<EmployeesListPresenter>().View);
Run Code Online (Sandbox Code Playgroud) 在即使是最小的WPF例子和原型我一直在做,在<Windows.Resources>开始臃肿快.把它重新放入app.xaml我的Windows和UserControls,但它很难组织(Visual Studio"XAML折叠"功能没有任何帮助,因为你只有一个页面充满了"Style ..."这个词).
另外,我正在努力想出一种易于记忆和有组织的方式来命名我的风格.最好的方法我发现它只是为了冗长和描述性,所以我得到这样的东西:BottomMainLeftScrollViewerStyle等.但这有其局限性,很快也会让人感到困惑.我决定使用camelCase作为样式名称,以便在XAML的页面和页面中轻松发现它们.
您有什么策略可以防止WPF资源变得笨拙?
<Window.Resources>
<local:CutOffConverter x:Key="AgeConverter" Cutoff="30"/>
<Style TargetType="Grid" x:Key="customerGridMainStyle">
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush StartPoint="0,0" EndPoint=".5,.5">
<GradientStop Offset="0.0" Color="#888"/>
<GradientStop Offset="1.0" Color="#ccc"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="StackPanel" x:Key="mainStackPanelStyle">
<Setter Property="HorizontalAlignment" Value="Left"/>
</Style>
<Style TargetType="ScrollViewer" x:Key="mainScrollViewerStyle">
<Setter Property="Height" Value="250"/>
</Style>
<Style TargetType="ListBox" x:Key="mainListBoxStyle">
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Margin" Value="10"/>
</Style>
<ObjectDataProvider x:Key="customers"
ObjectType="{x:Type local:Customer}"
MethodName="GetAllCustomers"/>
<DataTemplate DataType="{x:Type local:Customer}">
<Grid x:Name="MainGrid" Style="{StaticResource customerGridMainStyle}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100"/> …Run Code Online (Sandbox Code Playgroud) 好吧,我放弃了,你怎么在一条线上做到这一点?
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
//List<string> fields = values.ToList<string>();
//List<string> fields = values as List<string>;
//List<string> fields = (List<string>)values;
List<string> fields = new List<string>();
foreach (object value in values)
{
fields.Add(value.ToString());
}
//process the fields here knowning they are strings
...
}
Run Code Online (Sandbox Code Playgroud) 我从不在Visual Studio的解决方案资源管理器中使用" 添加现有项目..."功能,因为它令人困惑:
别人做的不同吗?我错过了一些关于解决方案资源管理器中"添加现有项目"应该如何工作的内容?
设置silverlight应用程序的属性时,我会看到未选中的框:
更小的下载大小和更快的速度声音对我来说很好,这让我想知道为什么这些没有默认打开.
那么这些选择的缺点是什么?