C#设计UserControl的时间DataContext

时间:2017-03-01 12:26:23

标签: c# wpf xaml user-controls design-time

我试图在UserControl中使用设计时DataContext。根据{{​​3}}(以及本网站上的一些帖子),应该可以在UserControl标记本身中使用设计时DataContext。

然而,它既不适用于我,也不适用于UserControl,也不适用于根元素标记。

UserControl(和模型视图模型)非常简单。一堆原始类型绑定到某些文本块和滑块。

我的UserControl看起来像:

var mongoose = require('mongoose');
var App = mongoose.model('App');
var express = require('express');
var bodyParser = require('body-parser');

var exp = express();

exp.use(bodyParser.json()); 
exp.use(bodyParser.urlencoded({
  extended: true
})); 


module.exports.searchApp = function(req, res) {
  App.findOne({
    'app_name': req.body.search
  }).exec(function(err, app) {
    res.status(200);
    res.json(app);
  });
};

并且模型视图模型如下所示:

<UserControl mc:Ignorable="d"
             d:DataContext="{d:DesignInstance mockups:PrototypeMockup}">
  <GroupBox DataContext="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=UserControl}, Path=Prototype}" Header="{Binding Name}" >
    ...
    <Image Source="{Binding Image}" />
    <TextBlock Text="{Binding Size, StringFormat={}{0} mm}" />
    <Slider Minimum="10" Maximum="80" Value="{Binding Size}" IsEnabled="{Binding IsEditing}" />
    <TextBlock Text="{Binding Threshold}" />
    <Slider Minimum="0" Maximum="255" Value="{Binding Threshold}" IsEnabled="{Binding IsEditing}" />
    <TextBlock Text="{Binding BlockSize, StringFormat={}{0} px}" />
    <Slider Minimum="10" Maximum="200" Value="{Binding BlockSize}" IsEnabled="{Binding IsEditing}" />
    ...

如果我将public class PrototypeMockup { public string Name => "Mockup Template"; public int Threshold => 230; public int Size => 50; public int BlockSize => 120; public bool Ignore => false; public bool IsEditing => true; public Int32Point ImageCenter => new Int32Point(400, 200); public BitmapSource Image => new BitmapImage(new Uri("image.png")); } 放在UserControl标记中,设计器中的UserControl不会更新绑定,但如果我将它放在GroupBox(根元素)标记中,它会更新绑定。

但是它不使用我放在模型类中的值,而是在该类中添加了每个属性的默认值。

我需要做些什么才能将模型类的值放入我的视图中?

修改

我正在使用.net 4.6

更新

似乎代码有效。我已经创建了一个新项目并添加了控件的精确副本,它的工作原理非常完美。然而,它仍然不适用于真实的项目。

我尝试过的事情:

  • 删除.suo文件
  • 删除设计师影子缓存
  • 清洁&amp;重建
  • 重新启动

0 个答案:

没有答案