2011-05-17 88 views
1

是否存在任何现有的扩展,或者是否可以使用类似于StyledStringElement的方式向monotouch.dialog中的RootElement添加样式相当直接。在monotouch.dialog中,RootElement可以轻松地设置样式吗?

基本上我想添加一个图像或徽章到RootElement来指示子视图中的细节,例如添加成功,警告,错误,信息类型图像 - 所以用户可能只对点击即可获得不完全成功的细节。

所以最好我将能够编写这样的事情...

UIImage imageSuccess = ImageLoader.DefaultRequestImage (new Uri ("file://" + Path.GetFullPath ("Images/Success.png")), null); 

var root = new RootElement("Root") { 
       Image = imageSuccess, 
       Accessory = UITableViewCellAccessory.DetailDisclosureButton, 
       new Section(){ 
        new BooleanElement ("Airplane Mode", false), 
        new RootElement ("Notifications") { 
         new Section (null, "Turn off Notifications") 
         { 
          new BooleanElement ("Notifications", false) 
         } 
        }} 
      }; 

感谢任何帮助或指针。

回答

5

这个问题是旧的,但如果有其他人遇到它,你可以继承RootElement类来添加一个图标。我的代码如下:

public class ImageRootElement : RootElement 
    { 
     private UIImage _image; 

     public override MonoTouch.UIKit.UITableViewCell GetCell (MonoTouch.UIKit.UITableView tv) 
     { 
      var baseCell = base.GetCell (tv); 
      var cell = new UITableViewCell (UITableViewCellStyle.Subtitle, "cellId"); 
      cell.TextLabel.Text = Caption; 

      cell.Accessory = baseCell.Accessory; 
      cell.ImageView.Image = _image; 
      return cell; 
     } 

     public ImageRootElement (string caption, UIImage image) : base(caption) 
     { 
      _image = image; 
     } 
    } 
1

由于MT.Dialog是开源的,因此您可以修改RootElement属性和构造函数。我认为没有什么能够满足您的需求,因此您必须扩展Dialog以满足您的需求。

顺便说一句,这听起来像你可能会误解RootElement的意图。 RootElement只是您的所有部分和元素所在的主要容器。在RootElement上显示泄露指示符或徽章似乎没有意义,因为这不是RootElement的意图。我可能会误解你。但是,如果要在元素上使用徽章等进行自定义样式,则可以创建从OwnerDrawnElement继承的自定义元素类,并覆盖它的两个抽象方法。但是,在此之前阅读Miguel对类似问题here的回答。

+0

谢谢您的回答,我只是想知道如果有什么我自己写之前就已经存在了,但是因为根元素能够如此轻易地被置于其他部分等里面,他们已经有一个默认的显示在这些情况下,我只是想改变这个默认显示。 现在我分别创建每个子元素,并使用触摸事件来根据需要显示它们,而不是让monotouch.dialog自动为我完成这一切。 有一天,我可能会看着做我最初想要的东西:) – Sean 2011-06-12 08:53:37

+0

根元素需要样式化 - 例如,当使用根元素定义子根目录时更改辅助视图。 – iwayneo 2014-02-14 11:13:51

相关问题