【问题标题】:Data Binding Dissimilar Types数据绑定不同类型
【发布时间】:2010-01-17 21:06:28
【问题描述】:

试图完成:

当绑定对象的枚举属性值发生变化时,我想更改绑定树节点的图像属性。

绑定对象是游戏中机场或车辆基地的表示。该对象有一个枚举值类型的Type属性:SmallAirfield、MediumAirField、LargeAirField、Port、AirCraftCarrier

正在检查的对象在属性网格中显示和编辑...

树中的扩展/节点暴露了一个图像属性

当用户更改基类的枚举值时,这是...我要更新树节点的图像...

因此,我正在尝试绑定不同的值类型...

也就是说,如果用户将空军基地类型更改为航母,我想将小图像更改为航母图像...

我不想在空军基地对象的对象表示中包含/公开图像属性...

如何将 Image 类型的图像属性绑定到我枚举的机场对象的机场类型属性?

我希望这是有道理的?

卡森

【问题讨论】:

  • 赢得表格......System.Windows.Forms
  • 我自己解决了这个问题...我只是创建了一个可绑定节点类的扩展类,其中包含一个与可绑定节点的基类引发的 params 属性更改事件匹配的方法...创建了新节点并将 propertychanged 方法与 property changed 事件联系起来......

标签: .net winforms data-binding


【解决方案1】:

foreach(字段中的字段 f) {

if (f.CurrentOwner == country)
{

    addNode = node.Add(node.Key + f.ID, f.ID);
    addNode.Tag = f;
    addNode.DataBindings.Add("Text", f, "ID");
    /// HERE IS WHERE I WOULD BIND THE IMAGE OF THE NODE TO THE 
    /// TO TYPE OF FIELD....
    switch (f.Type)
    {
        case BaseType.Airfield:
            fieldNode.Image = ((Icon)Scenario.Properties.Resources.Pony).ToBitmap();
            break;
        case BaseType.Carrier:
            fieldNode.Image = ((Icon)Scenario.Properties.Resources.CV).ToBitmap();
            break;
        case BaseType.Port:
            fieldNode.Image = ((Icon)Scenario.Properties.Resources.Tiger).ToBitmap();
            break;
        case BaseType.VBase:
            fieldNode.Image = ((Icon)Scenario.Properties.Resources.Tiger).ToBitmap();
            break;
    }
}

}

【讨论】:

  • 这当然不会编译,因为我正在搞乱向上转换到不同的节点类型...addNode 是 fieldNode...抱歉跛足
猜你喜欢
  • 2013-12-10
  • 1970-01-01
  • 2016-06-21
  • 1970-01-01
  • 2012-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-05
相关资源
最近更新 更多