Tim*_*imo 5 c# wpf xaml user-controls design-time
我正在尝试在 UserControl 中使用设计时 DataContext。根据这篇文章(以及本网站上的一些帖子),应该可以在 UserControl 标记本身中使用设计时 DataContext。
但是它对我不起作用,无论是在 UserControl 的还是在根元素的标签中。
UserControl(和模型视图模型)非常简单。一堆原始类型绑定到一些文本块和滑块。
我的用户控件看起来像:
<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}" />
...
Run Code Online (Sandbox Code Playgroud)
模型视图模型如下所示:
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"));
}
Run Code Online (Sandbox Code Playgroud)
如果我将d:DataContext
UserControl放在UserControl 标记中,设计器中的 UserControl 不会更新绑定,但如果我将其放在 GroupBox(根元素)标记中,它会更新绑定。
但是它不使用我放在模型类中的值,而是插入了该类中每个属性的默认值。
我该怎么做才能让模型类的值进入我的视图?
编辑
我正在使用 .net 4.6
更新
看起来代码是有效的。我创建了一个新项目并添加了控件的精确副本,它运行得非常完美。然而,它在实际项目中仍然不起作用。
我试过的:
归档时间: |
|
查看次数: |
1132 次 |
最近记录: |