我对C#/ WPF的MVVM设计有疑问.我看过几个演示应用程序,但它们并没有真正解决我的问题.我的应用程序由包含其他对象的对象组成.就像父子关系一样.
我现在的问题是:
我有以下情况:
class Child {
string Name;
}
class ChildVM {
Child _child;
string Name{return _child.Name;}
}
class Parent {
string Name;
List<Child> children;
}
class ParentVM{
Parent _parent;
string Name{return _parent.Name;}
List<ChildVM> children {get;set;}
ParentVM(Parent p){_parent = p;}
}
void CreateANewParent(){
List<ChildVM> children = new List<ChildVM>(){new ChildVM(new Child()),...};
ParentVM parent = new ParentVM(new Parent());
foreach(ChildVM child in children)
parent.children.Add(child);
}
Run Code Online (Sandbox Code Playgroud)
这里的问题是,ParentVM包含ChildVM,但实际的Parent(在ParentVM内)没有ChildVM对象包含的Child对象.我也认为复制Child对象不是一个好主意,因为它会导致冗余,在我的应用程序上下文中也没有必要/可能创建新的Child对象.
我还考虑过以下课程设计:
class ParentVM {
Parent _parent;
string Name{return _parent.Name;}
List<Child> children …Run Code Online (Sandbox Code Playgroud) Hamcrest中是否有匹配器来比较集合的平等性?有contains,containsInAnyOrder但我不需要equals绑定具体的集合类型.例如,我无法将Arrays.asList和Map.values与Hamcrest进行比较equals.
提前致谢!
我取消了正在运行的 gradle 构建,现在每当我重新启动它时都会收到以下消息:
无法使用 BuildSessionServices.createFileHasher() 创建 FileHasher 类型的服务。无法锁定文件哈希缓存 (/data/.gradle/6.4.1/fileHashes),因为它已被此进程锁定。
我的目标是通过DependencyProperties操作我的应用程序的文本样式.我得到了一个图表,其中的文本将被大小,字体家族,颜色等操纵.所以我想使用类似于Word等富文本编辑器的界面.
我在我的TextStyleVM http://shevaspace.blogspot.com/2006/12/i-have-some-fun-with-formattedtext_14.html中使用此代码
所以我有一个FontFamilyProperty和一个Getter和Setter:
public static DependencyProperty FontFamilyProperty =
DependencyProperty.Register(
"FontFamily",
typeof(FontFamily),
typeof(OutlinedText),
new FrameworkPropertyMetadata(
SystemFonts.MessageFontFamily,
FrameworkPropertyMetadataOptions.AffectsRender |
FrameworkPropertyMetadataOptions.AffectsMeasure),
new ValidateValueCallback(IsValidFontFamily));
public FontFamily FontFamily
{
get { return (FontFamily)base.GetValue(FontFamilyProperty); }
set { base.SetValue(FontFamilyProperty, value); }
}
Run Code Online (Sandbox Code Playgroud)
然后有一个ToStyle方法,它设置图表标签的样式,这些样式将被操作:
Style style = new Style();
Binding fontFamilyBinding = new Binding("FontFamily");
fontFamilyBinding.Source = this;
Setter fontFamilySetter = new Setter();
fontFamilySetter.Property = TextBlock.FontFamilyProperty;
fontFamilySetter.Value = fontFamilyBinding;
style.Setters.Add(fontFamilySetter);
return style;
Run Code Online (Sandbox Code Playgroud)
现在这适用于TextBox.文本框显示当前的FontFamily,如果我在文本框中输入新的有效FontFamily(如Arial),则会更改标签的FontFamily.
但是,我想要的是一个组合框,它显示SystemFonts,我可以为我的标签选择一个FontFamily.但是,绑定似乎不起作用.既不显示系统字体也不显示标签的当前字体.组合框只是空的.
这是我的xaml:
<r:RibbonLabel Content="FontFamily" />
<!--these do not work-->
<r:RibbonComboBox SelectedItem="{Binding FontFamily}"/>
<r:RibbonComboBox ItemsSource="{Binding …Run Code Online (Sandbox Code Playgroud) 我刚刚从JDK1.6切换到JDK 1.7.
我有这个代码:
SomeClass<SomeType> someVariable = new SomeClass<SomeType>(createSomeObject());
Run Code Online (Sandbox Code Playgroud)
现在我收到一个警告:
Redundant specification of type arguments <SomeType>
Run Code Online (Sandbox Code Playgroud)
如果我使用快速修复Eclipse给我这个:
SomeClass<SomeType> someVariable = new SomeClass<>(createSomeObject());
Run Code Online (Sandbox Code Playgroud)
结果如何
Got an exception - expecting EOF, found 'xyz'
Run Code Online (Sandbox Code Playgroud)
xyz是我的代码文本中的下一个项目.
当我删除有角度的括号时,我收到此警告:
SomeClass is a raw type. References to generic type SomeClass<M> should be parameterized
Run Code Online (Sandbox Code Playgroud)
如果我添加类型参数,我最终会收到第一个警告(冗余规范...)
WTF正在进行中?
我想保留两个警告,我仍在使用Eclipse 3.7.1.我不愿意更新我的Eclipse,如果有另一种方法可以解决这个问题,因为我需要一些时间来按照我想要的方式再次配置它.
我指的是这个链接
我通过这个命令输出:
mysql -e "show engine innodb status" -u -p database > mydumpfile.txt
但是,我使用的任何编辑器(less,vim,kwrite)都显示\n而不是真正的新行.
如何用shell中的sed,awk或任何其他工具完成替换?
这个真让我(和我的同事)烦恼.
不是
那么为什么没有人注意到这个命名惯例的缺陷或者是否有这个错字背后的意图?