StyledMultilineElementから派生した独自のカスタム要素があります。
public class SubmenuElement : StyledMultilineElement
{
public static UITableViewCellStyle DefaultCellStyle { get; set; }
public static UITableViewCellAccessory DefaultCellAccessory { get; set; }
public static UILineBreakMode DefaultDetailTextLineBreakMode { get; set; }
public UILineBreakMode DetailTextLineBreakMode { get; set; }
public int? DetailLines { get; set; }
public bool? DetailTextResizesFontToFitWidth { get; set; }
static SubmenuElement()
{
// Set the defaults
DefaultCellStyle = UITableViewCellStyle.Default;
DefaultCellAccessory = UITableViewCellAccessory.DisclosureIndicator;
DefaultDetailTextLineBreakMode = UILineBreakMode.TailTruncation;
}
...
public override UITableViewCell GetCell (UITableView tv)
{
var cell = base.GetCell (tv);
if (cell.DetailTextLabel != null && !string.IsNullOrWhiteSpace(cell.DetailTextLabel.Text))
{
if (DetailLines.HasValue)
cell.DetailTextLabel.Lines = DetailLines.Value;
cell.DetailTextLabel.LineBreakMode = DetailTextLineBreakMode;
if (DetailTextResizesFontToFitWidth.HasValue)
cell.DetailTextLabel.AdjustsFontSizeToFitWidth = DetailTextResizesFontToFitWidth.Value;
}
return cell;
}
}
DetailTextにLineBreakModeを設定しても効果がないようです。
public class PeopleView
{
....
void CreateUI()
{
var root = new RootElement(Header)
{
GroupAndSortResults(people, CurrentState.PeopleDirectoryOptions.GroupAndSort)
.Select (g => new Section(g.Key)
{
g.Select<PeopleListItem, SubmenuElement> (p => new SubmenuElement(
GetName (p),
p.TypeGradeSchool,
() => GoToPersonProfile(p.ID),
null,
UITableViewCellAccessory.None,
UITableViewCellStyle.Subtitle
)
{
ImageUri = PersonAvatarImage.GetAvatar (p.ID),
OnImageLoaded = WhenImageLoaded,
DetailTextLineBreakMode = UILineBreakMode.MiddleTruncation,
DetailTextResizesFontToFitWidth = true,
DetailLines = 0
}).ToArray ()
}).ToArray()
};
this.Root = root;
this.NavigationItem.RightBarButtonItems = new UIBarButtonItem[]
{
new UIBarButtonItem(UIBarButtonSystemItem.Organize, new EventHandler(WhenOrganizerTapped)),
new UIBarButtonItem(UIBarButtonSystemItem.Refresh, new EventHandler(WhenRefreshTapped))
};
}
}
詳細行の切り捨てが機能しない理由について何かアイデアはありますか?他のすべては正しく機能します。私のデフォルトはテールトランケーションですが、この特定のビューでは、ミドルトランケーションが必要でした。切り捨てスタイルは機能しません。