Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF&;MVVM,窗口中的设计时数据,但不是子用户控件_Wpf_Mvvm - Fatal编程技术网

WPF&;MVVM,窗口中的设计时数据,但不是子用户控件

WPF&;MVVM,窗口中的设计时数据,但不是子用户控件,wpf,mvvm,Wpf,Mvvm,在Visual Studio 2013(完全更新)和Blend 2013中,我在UserControl中没有看到设计时数据,但在具有UserControl的窗口中看到了设计时数据。下面是我的问题的简化演示 模型(color.cs): ModelView(colorViewModel.cs): UserControl XAML(colorUserControl.XAML): 窗口XAML(main Window.XAML): 该窗口获取设计时数据: 但不是用户控件: 如何让UserCo

在Visual Studio 2013(完全更新)和Blend 2013中,我在UserControl中没有看到设计时数据,但在具有UserControl的窗口中看到了设计时数据。下面是我的问题的简化演示

模型(color.cs):

ModelView(colorViewModel.cs):

UserControl XAML(colorUserControl.XAML):


窗口XAML(main Window.XAML):


该窗口获取设计时数据:

但不是用户控件:


如何让UserControl显示设计时数据?

您遇到的问题是,即使在主窗口中,您也没有实际使用设计时数据


使用设计时数据时,有两个选项:

  • DesignInstance-用于帮助塑造数据上下文。它将通过绑定路径为您提供intellisense支持
  • DesignData—这将允许您选择一个xaml资源,该资源用实际样本数据表示您的datacontext
  • 不幸的是,您只能选择一个(它们不能共存)


    下面列出了一些好的资源:


    谢谢!我的代码的第一个问题是缺少:xmlns:local=“clr namespace:TestWPF”d:DataContext=“{d:DesignInstance Type=local:colorViewModel,IsDesignTimeCreatable=True}”`。第二个问题(花了我一点时间才找到)是我的ViewModel没有getter for it属性。换句话说,我需要更改公共列表颜色列表;到公共列表colorList{get;set;}
    using System;
    namespace TestWPF {
        public class color {
            public string name { get; set; }
        }
    }
    
    using System;
    using System.Collections.Generic;
    
    namespace TestWPF
    {
        public class colorViewModel
        {
            public List<color> colorList;
            public colorViewModel()
            {
                colorList = new List<color>();
                colorList.Add(new color() { name = "blue" });
                colorList.Add(new color() { name = "red" });
            }
        }
    }
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;
    
    namespace TestWPF
    {
        public partial class colorUserControl : UserControl
        {
            public colorUserControl()
            {
                InitializeComponent();
                this.DataContext = (new colorViewModel()).colorList;
            }
        }
    }
    
    <UserControl x:Class="TestWPF.colorUserControl"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
                 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
                 mc:Ignorable="d" 
                 d:DesignHeight="300" d:DesignWidth="300">
        <Grid>
            <DataGrid ItemsSource="{Binding}" AutoGenerateColumns="True" />
        </Grid>
    </UserControl>
    
    <Window x:Class="TestWPF.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="350" Width="525"
            xmlns:view="clr-namespace:TestWPF">
        <Grid>
            <view:colorUserControl />
        </Grid>
    </Window>