windows-phone-8.1 winrt-xaml

Control de texto utilizado en la aplicación de mensajería de Windows Phone 8.1



windows-phone-8.1 winrt-xaml (1)

Necesito un control de texto similar al utilizado por la aplicación de mensajería WP 8.1 que muestra las flechas hacia arriba y hacia abajo que apuntan a ''arriba-izquierda'' y ''abajo a la derecha''. No puedo encontrar uno. Veo otras aplicaciones como ''whapsapp'', ''line'', etc. usando controles similares.

¿Hay un control preexistente / de código abierto disponible con esa funcionalidad? Cualquier puntero o enlace sería muy útil.

Gracias, Amar


Esto no requiere un control personalizado. Puede crear un TextBox o un TextBlock normal y agregar un triángulo debajo (o encima). Use un selector de plantilla para elegir a la izquierda o a la derecha según la persona que está chateando:

Xaml:

<Page.Resources> <DataTemplate x:Key="ChatTemplateR"> <StackPanel Margin="30,2,0,2"> <Border Background="{Binding Fill}" > <TextBlock MinWidth="200" Text="{Binding Text}" TextWrapping="Wrap" Margin="5"/> </Border> <Path x:Name="DownRightTri" HorizontalAlignment="Right" Margin="0,0,10,0" Fill="{Binding Fill}" Data="M0,0 H10 V10" /> </StackPanel> </DataTemplate> <DataTemplate x:Key="ChatTemplateL"> <StackPanel Margin="0,2,30,2" > <Path x:Name="UpLeftTri" HorizontalAlignment="Left" Margin="10,0,0,0" Fill="{Binding Fill}" Data="M0,-5 V5 H10 " /> <Border Background="{Binding Fill}" > <TextBlock MinWidth="200" Text="{Binding Text}" TextWrapping="Wrap" Margin="5"/> </Border> </StackPanel> </DataTemplate> <local:ChatTemplateSelector x:Key="ChatSelector" LeftTemplate="{StaticResource ChatTemplateL}" RightTemplate="{StaticResource ChatTemplateR}"/> </Page.Resources> <Grid> <ListView x:Name="lv" ItemTemplateSelector="{StaticResource ChatSelector}"/> </Grid>

TemplateSelector:

class ChatTemplateSelector: DataTemplateSelector { public DataTemplate LeftTemplate { get; set; } public DataTemplate RightTemplate { get; set; } protected override DataTemplate SelectTemplateCore(object item, DependencyObject container) { DataItem di = (DataItem)item; DataTemplate dt = di.IsLeft ? this.LeftTemplate : this.RightTemplate; return dt; } }