2014-12-23 7 views
4

Я конвертирую MonoTouch.Dialog приложение к Xamarin.Forms.Xamarin.Forms Listview с 2-строчной меткой?

У меня есть ячейка в ListView, и у нее есть строка «Detail», длина которой должна быть длиной 2 строки и после этого обрезать хвост.

 var lblDetail = new Label 
     { 
      LineBreakMode = LineBreakMode.TailTruncation, 
      Text = "a really long string that should show 2 lines then ..." 
     }; 

Как установить что-то вроде, "Lines = 2"

+0

Вы, вероятно, нужно создать пользовательскую ячейку. XF Labs имеет ExtendedTextCell - он может делать то, что вам нужно, документация разрежена, поэтому трудно сказать. – Jason

+0

мой ответ вам поможет? –

+0

Помог ли мой ответ решить вашу проблему? Потому что он решил мой;) – Daniel

ответ

-3

Вы можете захотеть настроить ListView:

<ListView x:Name="ListMenu" ItemsSource="{Binding _YourItems_}" > 
     <ListView.ItemTemplate> 
     <DataTemplate> 
      <ViewCell> 
      <ViewCell.View> 
       <StackLayout Orientation="Horizontal"> 
       <Label Text="{Binding _YourText_}" TextColor="Black" /> 
       </StackLayout> 
      </ViewCell.View> 
      </ViewCell> 
     </DataTemplate> 
     </ListView.ItemTemplate> 
    </ListView> 

даже если текст не умещаются на одну строку, она будет обернуть автоматически.

0

следующий код работает отлично для меня :)

UserNotesListView = new ListView() { 
       HorizontalOptions = LayoutOptions.FillAndExpand, 
       VerticalOptions = LayoutOptions.FillAndExpand, 
       HasUnevenRows=true, 
       ItemsSource=//upon your bussiess 
      }; 

      DataTemplate dt=new DataTemplate(()=> 
       { 
        var LabelText = new Label(); 
        LabelText.SetBinding(Label.TextProperty, new Binding("note")); 
        return new ViewCell { View = LabelText }; 
      }); 
      UserNotesListView.ItemTemplate = dt; 
      Content = new StackLayout 
      { 
       HorizontalOptions=LayoutOptions.FillAndExpand, 
       Children= 
       { 
        UserNotesListView 
       } 
      }; 
1

Я решил это с помощью пользовательского средства визуализации

Это моя XAML (в моем проекте PCl)

<ListView ItemsSource="{Binding Cards}"> 
    <ListView.ItemTemplate> 
    <DataTemplate> 
     <ViewCell> 
      <Grid Padding="10"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="60"/> 
       <ColumnDefinition Width="*"/> 
      </Grid.ColumnDefinitions> 
      <Image Source="{Binding Icon}"/> 
      <customRenderers:MultiLineLabel Text="{Binding Summary}" 
              Grid.Column="1"/> 
      </Grid> 
     </ViewCell> 
    </DataTemplate> 
    </ListView.ItemTemplate> 

</ListView> 

Это мой MultiLineLabel класс

public class MultiLineLabel : Label 
    { 
    } 

Это визуализатор для прошивки:

[assembly: ExportRenderer(typeof(MultiLineLabel), typeof(MultiLineLabelRenderer))] 
namespace NameSpace.iOS.Renderers 
{ 
    public class MultiLineLabelRenderer : LabelRenderer 
    { 
     protected override void OnElementChanged(ElementChangedEventArgs<Label> e) 
     { 
      base.OnElementChanged(e); 
      if (Control != null) 
      { 
       Control.LineBreakMode = UILineBreakMode.TailTruncation; 
       Control.Lines = 3; 
      } 
     } 
    } 
} 
+0

как достичь этой же вещи в 'Android' любом обходном пути? – Jamal