gpt4 book ai didi

.net - 如何使用d :DesignInstance with types that don't have default constructor?

转载 作者:行者123 更新时间:2023-12-03 08:54:25 30 4
gpt4 key购买 nike

我将一个文本框绑定(bind)到一个对象,如下所示:

  <TextBlock d:DataContext="{d:DesignInstance ViewModel:TaskVM }" 
Text="{Binding Title}" MouseLeftButtonDown="TextBlock_MouseLeftButtonDown">
</TextBlock>

现在我想知道如何让它在设计期间显示模拟数据。我试过做这样的事情:
  <TextBlock Text="{Binding Path=Title}" MouseLeftButtonDown="TextBlock_MouseLeftButtonDown">
<d:DesignProperties.DataContext>
<ViewModel:TaskVM Title="Mock"/>
</d:DesignProperties.DataContext>
</TextBlock>

但是,由于 TaskVM 没有默认 ctor,因此我找到了“无默认构造函数”。

我知道当我使用 d:DataContext="{d:DesignInstance ViewModel:TaskVM }" 时它创建一个模拟数据类型。有没有办法让我设置这个模拟类型的属性?

谢谢!

最佳答案

在 XAML 中实例化类型需要默认构造函数。作为一种解决方法,您可以简单地创建 TaskVM 的子类。它将具有默认构造函数并将其用作设计时数据上下文。

<TextBlock d:DataContext="{d:DesignInstance ViewModel:DesignTimeTaskVM }" 
Text="{Binding Title}" MouseLeftButtonDown="TextBlock_MouseLeftButtonDown">
</TextBlock>

另一种选择是设置 d:IsDesignTimeCreatableFalse并且将在运行时为您创建替代类型(使用您的 TaskVM 类型作为“形状”)。
<TextBlock d:DataContext="{d:DesignInstance ViewModel:DesignTimeTaskVM, IsDesignTimeCreatable=False}" 
Text="{Binding Title}" MouseLeftButtonDown="TextBlock_MouseLeftButtonDown">
</TextBlock>

关于.net - 如何使用d :DesignInstance with types that don't have default constructor?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8472228/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com