我有一个简单的例子,我正在创建一个由列表框组成的视图,列表框显示一堆项目.我想知道我是否正确地在这里创建View Model和Model类.使用在这种情况下正确工作的任何值,我理解它有点主观,但我目前的解决方案感觉不对.这是一个简化版本.
ViewModels和Models:
namespace Example
{
public class ParentViewModel
{
public ParentViewModel()
{
// ... Create/Consume ChildViewModel * n
}
public List<ChildViewModel> ChildViewModels { get; set; }
}
public class ChildViewModel
{
public ChildViewModel()
{
// ... Create/Consume ChildModel
}
public ChildModel Model { get; set; }
}
public class ParentModel
{
public List<ChildModel> ChildModels { get; set; }
public ParentModel()
{
// ... Create/Consume ChildModel * n;
}
}
public class ChildModel
{
public ChildModel()
{
// ... Contains …Run Code Online (Sandbox Code Playgroud) 我已经为我的解决方案添加了一个.NET Core RC2类库(为了好玩),我通常做的第一件事就是添加一个指向共享的链接,GlobalAssemblyInfo.cs并编辑现有的AssemblyInfo.cs到程序集细节.
所以我刚刚完成了"添加" - >"现有项目",找到了我的文件并点击了添加按钮的下拉列表.没有"添加为链接"选项.
这是怎么回事?如何使用.NET Core执行此操作?
我压制了一些警告,1591是XML注释警告.这不是我不使用评论,有一些误报.
现在要发现XML注释警告是1591的事实占用了大量的谷歌搜索.某个地方有名单吗?或者在Visual Studio中显示错误号的方法?
谢谢
我确定我错过了一些明显的东西,我有一个区域,我打算在其中绘制文字.我知道它(区域)的高度和宽度.我想知道宽度中有多少个字符/单词,最好是字符.第二个问题,如果线太长我想画第二行,所以我想我也需要得到文本的高度,包括它认为正确的垂直填充?
我也想知道逆,即我可以在特定宽度中适合多少个字符.
我认为WPF不受像素约束这一事实会对答案有所影响吗?
最终,我计划在文本中嵌入不规则形状图像周围的文字.
任何正确方向的指针都会很棒.
谢谢
这是我今天没有找到明确答案的事情.
似乎有不同版本的Javascript,但我没有看到任何书籍或网站说"这针对ECMAScript版本2".似乎有一个ECMAScript 5,如果相信wiki页面,则不会在任何浏览器中使用.那么我需要了解版本吗?
服务器端Javascript.我已经看到了一些这方面的提及,我没有特别关注它,但在一两句话中,服务器端Javascript使用在哪里,为什么?
我想不同的浏览器支持Javascript的不同子集(猜测),但话又说回来,我还没有看过如此,它只是似乎合乎逻辑的,所有其它网络技术的状态.是的还是我离开的?
要重现此问题,请添加用户控件,粘贴下面的xaml,然后将实例添加到窗口.最后将窗口的datacontext设置为ADummyDataContext的实例(也在下面)
当您第一次运行应用程序时,您应该获得一个包含三个类别的网格,每个类别包含一个cat.如果单击底部两个类别中的任何一个并单击猫名称,则会出现一个蓝色行,仅显示猫的名称.
但是,如果单击第一行并单击cat的行,则不会显示蓝色行. 注意:这仅在您第一次运行应用程序时发生.一旦你点击任何其他猫,第一类猫将按预期工作.
<UserControl x:Class="WpfUserControls.SimpleGridControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Background="#FFE46400">
<Grid Margin="2,2,2,2">
<Grid.RowDefinitions>
<RowDefinition Height="26" MaxHeight="26" MinHeight="26" />
<RowDefinition />
<RowDefinition Height="26" MaxHeight="26" MinHeight="26" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
</Grid.ColumnDefinitions>
<ToolBar Grid.Row="0">
<Button Content="Button" Name="button1" VerticalAlignment="Center" Width="75" />
<Button Content="Button" Name="button2" VerticalAlignment="Center" Width="75" />
</ToolBar>
<DataGrid CanUserAddRows="False" ItemsSource="{Binding Path=KittensView}" AutoGenerateColumns="True" Grid.Row="1" HorizontalAlignment="Stretch" Name="dataGrid1" VerticalAlignment="Stretch">
<DataGrid.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Path=Name}" />
</StackPanel>
</DataTemplate>
</GroupStyle.HeaderTemplate>
<GroupStyle.ContainerStyle>
<Style TargetType="{x:Type GroupItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GroupItem}">
<Expander>
<Expander.Header>
<StackPanel Orientation="Horizontal"> …Run Code Online (Sandbox Code Playgroud) 对,坚持MVVM焦点一分钟,有少数可能发生线程的场景:
像往常一样,为简单起见,我们有一个Model类,ViewModel类和View类.Model具有Collection和string属性.
1)用户触发长时间运行的后台任务.视图触发ViewModel.可以使用ViewWorker轻松地使用ViewModel进行管理
2)线程更新模型,ViewModel通过模型更改通知.之前我们已经讨论过使用INotifyChanged来通知从Model到ViewModel的更改.DependencyProperty系统似乎为您编组这些正确的线程.
对于ObservableCollections,这不起作用.因此,如果我的模型的公共面是单线程的(不喜欢,模型为什么要知道线程),或者我会在ViewModel中复制模型的某些部分(例如上面的Collection)以确保对模型进行修改正确的线程?
我想我已经回答了我自己的问题.也许不是.我的模型不知道线程,因此或许只有礼貌对待markshal回用科林早期酝酿的IMarshalInvoker想法?
我的一些问题是我认为MVVM是另一个MVC变种,而且从历史上看,我很乐意使用像MVP,MP,MVC这样的术语几乎可以互换,因为我知道什么对GUI技术起作用(通常是winforms) V端.当我说MVVM时,我特别在寻找有关WPF和WPF特定弱点的实用建议.我希望这能解释我的问题的性质以及我问他们的原因.
Visual Studio 2010在哪里放置MSBuild日志?我甚至不确定他们会被称为什么.有任何想法吗?
编辑:这是C#
我只需要简单说明一下:
我有一个带球模型的示例应用程序,有两个视图(假设一个视图显示了球,并允许您使用鼠标来调整大小,单击更改其颜色,第二个视图具有一个带有两个子控件的控件(大小文本框和颜色选择器))。
MVVM是说我必须在这里拥有两台VM,一个用于每个特定的View,还是可以在不破坏模式的情况下重用VM?
作为后续问题,如果需要我拥有两个VM是否合法,根据模式,将一个作为另一个的派生类型,或者将两个作为基类的派生类型,或者将其作为基于公共部分的复合类?基本上满足两种类型的需求,但可以提高重用性吗?
我的示例是人为设计的,我试图指出两个视图都影响模型的相同两个属性。两个视图之间的最大尺寸,可用颜色等相同。
谢谢
假设我有一个模型,它公开一组对象,我将在 GUI 中显示和更改这些对象。
所以我们让 Model 暴露了 ModelItem 的集合。
View 绑定到一个 ViewModel,它公开 ViewModelItem 的 ObservableCollection。ViewModelItem 是 ModelItem 的 Viewmodel
视图包含一个列表框和一个数据模板。DataTemplate 用于 ViewModelItem 类型的项目。View DataContext 指向 ViewModel 的一个实例。ListBox 绑定到 ObservableCollection。
我控制所有代码。
到目前为止如此简单。题:
将模型上的集合公开为 ObservableCollection 是否可以接受?此外,在 Model 和 ModelItem 上实现 INotifyPropertyChanged 是否可以接受?
我担心的是我混淆了模型和视图模型之间的分离,但是常识说,这是一种通知模型中元素更改的机制,让我们使用它......
只是想从别人那里得到一些看法。
谢谢
wpf ×6
mvvm ×4
c# ×2
.net-core ×1
javascript ×1
msbuild ×1
warnings ×1
wpf-controls ×1
wpfdatagrid ×1