【发布时间】:2016-01-25 16:09:51
【问题描述】:
这是
WPF Control's Nested property's data binding
曾经以某种方式解决过吗?
...
我该怎么做:
- 声明一个从 Control 派生的模板化控件
- 有一个作为属性的中间层类
- 从 XAML 设置中级类的属性
我有这个代码:
<cars:2016Model
Engine.Power = "MOREMOREWARPSPEED"
>
public class 2016Model : Control
{
public 2016Model()
{
if (Date == 2016)
Engine = new 2016 Engine
}
public Engine { get; set; }
public class Engine
{
public virtual Double Power
get
{
return 0;
}
}
public class 2016Engine : Engine
{
public override Power
{
return 1000KWH;
}
}
public class 2015Engine : Engine
{
public override Power
{
return 350HP;
}
}
我想换掉中级班。
我想换掉模板,并对模型和引擎的同一个当前化身有不同的视图。
我想对此进行模板化,但我看不到如何从 Xaml 设置可交换类的属性。
【问题讨论】:
-
我已经稍微整理了你的问题,但我仍然不太清楚意图。您是说要在 Xaml 中声明
2015Engine或2016Engine的实例但不知道该怎么做?你试过什么? -
不,我想在 2016Model 的特定版本中声明实例。在构造函数中。没关系,我可以为每个课程设置不同的课程。但是我不能为每个子模型设置不同的类。我需要从 XAML 设置引擎大小。
-
你刚才所说的似乎没有意义:你想在构造函数中声明(我认为)
Engine的实例,你说这很好,但你说您不能为子模型设置不同的类(您刚刚暗示可以)。您能否尝试准确地描述您希望能够声明的对象配置以及您希望 Xaml 包含的内容?现在我无法解决这个问题。 -
@DanPuzey 我需要设置一个来自 XAML 的属性的对象的属性。
-
你还是没有解释清楚。让我尝试一个不同的问题:您的问题是您的行
Engine.Power = "MOREMOREWARPSPEED"导致错误吗?如果是这样:错误是什么?我问这个是因为在您发布的代码中,Power是 read-only -并且还在派生类中使用无效语法声明(因此您发布的代码无法编译完全)。