小编Ian*_*Ian的帖子

MVVM和嵌套视图模型

我有一个简单的例子,我正在创建一个由列表框组成的视图,列表框显示一堆项目.我想知道我是否正确地在这里创建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)

wpf mvvm

27
推荐指数
1
解决办法
1万
查看次数

如何在.NET Core库中添加文件作为链接?

我已经为我的解决方案添加了一个.NET Core RC2类库(为了好玩),我通常做的第一件事就是添加一个指向共享的链接,GlobalAssemblyInfo.cs并编辑现有的AssemblyInfo.cs到程序集细节.

所以我刚刚完成了"添加" - >"现有项目",找到了我的文件并点击了添加按钮的下拉列表.没有"添加为链接"选项.

这是怎么回事?如何使用.NET Core执行此操作?

c# visual-studio-2015 .net-core .net-core-rc2

15
推荐指数
2
解决办法
3777
查看次数

Visual Studio 2010警告编号.我在哪里可以找到它们?

我压制了一些警告,1591是XML注释警告.这不是我不使用评论,有一些误报.

现在要发现XML注释警告是1591的事实占用了大量的谷歌搜索.某个地方有名单吗?或者在Visual Studio中显示错误号的方法?

谢谢

warnings visual-studio-2010

10
推荐指数
3
解决办法
7937
查看次数

适合特定宽度的字符串长度

我确定我错过了一些明显的东西,我有一个区域,我打算在其中绘制文字.我知道它(区域)的高度和宽度.我想知道宽度中有多少个字符/单词,最好是字符.第二个问题,如果线太长我想画第二行,所以我想我也需要得到文本的高度,包括它认为正确的垂直填充?

我也想知道逆,即我可以在特定宽度中适合多少个字符.

我认为WPF不受像素约束这一事实会对答案有所影响吗?

最终,我计划在文本中嵌入不规则形状图像周围的文字.

任何正确方向的指针都会很棒.

谢谢

wpf wpf-controls

9
推荐指数
1
解决办法
9851
查看次数

Javascript,还有几个问题

这是我今天没有找到明确答案的事情.

  1. 似乎有不同版本的Javascript,但我没有看到任何书籍或网站说"这针对ECMAScript版本2".似乎有一个ECMAScript 5,如果相信wiki页面,则不会在任何浏览器中使用.那么我需要了解版本吗?

  2. 服务器端Javascript.我已经看到了一些这方面的提及,我没有特别关注它,但在一两句话中,服务器端Javascript使用在哪里,为什么?

  3. 我想不同的浏览器支持Javascript的不同子集(猜测),但话又说回来,我还没有看过如此,它只是似乎合乎逻辑的,所有其它网络技术的状态.是的还是我离开的?

javascript

7
推荐指数
1
解决办法
173
查看次数

Wpf DataGrid问题

要重现此问题,请添加用户控件,粘贴下面的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)

wpf wpfdatagrid

7
推荐指数
1
解决办法
961
查看次数

MVVM和多线程

对,坚持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特定弱点的实用建议.我希望这能解释我的问题的性质以及我问他们的原因.

wpf multithreading mvvm

6
推荐指数
1
解决办法
7074
查看次数

Visual Studio 2010在哪里放置MSBuild日志?

Visual Studio 2010在哪里放置MSBuild日志?我甚至不确定他们会被称为什么.有任何想法吗?

编辑:这是C#

c# msbuild visual-studio-2010

6
推荐指数
1
解决办法
3351
查看次数

MVVM的虚拟机可以重复使用吗?

我只需要简单说明一下:

我有一个带球模型的示例应用程序,有两个视图(假设一个视图显示了球,并允许您使用鼠标来调整大小,单击更改其颜色,第二个视图具有一个带有两个子控件的控件(大小文本框和颜色选择器))。

MVVM是说我必须在这里拥有两台VM,一个用于每个特定的View,还是可以在不破坏模式的情况下重用VM?

作为后续问题,如果需要我拥有两个VM是否合法,根据模式,将一个作为另一个的派生类型,或者将两个作为基类的派生类型,或者将其作为基于公共部分的复合类?基本上满足两种类型的需求,但可以提高重用性吗?

我的示例是人为设计的,我试图指出两个视图都影响模型的相同两个属性。两个视图之间的最大尺寸,可用颜色等相同。

谢谢

wpf mvvm

5
推荐指数
1
解决办法
1438
查看次数

MVVM:更改通知是否混淆了模型和视图模型之间的分离?

假设我有一个模型,它公开一组对象,我将在 GUI 中显示和更改这些对象。

所以我们让 Model 暴露了 ModelItem 的集合。

View 绑定到一个 ViewModel,它公开 ViewModelItem 的 ObservableCollection。ViewModelItem 是 ModelItem 的 Viewmodel

视图包含一个列表框和一个数据模板。DataTemplate 用于 ViewModelItem 类型的项目。View DataContext 指向 ViewModel 的一个实例。ListBox 绑定到 ObservableCollection。

我控制所有代码。

到目前为止如此简单。题:

将模型上的集合公开为 ObservableCollection 是否可以接受?此外,在 Model 和 ModelItem 上实现 INotifyPropertyChanged 是否可以接受?

我担心的是我混淆了模型和视图模型之间的分离,但是常识说,这是一种通知模型中元素更改的机制,让我们使用它......

只是想从别人那里得到一些看法。

谢谢

wpf mvvm

5
推荐指数
1
解决办法
897
查看次数