c# xaml multibinding string-formatting

c# - xamarin forms label format



StringFormat y Multibinding con etiqueta (3)

No puede enlazar esto porque está intentando vincular una cadena a un objeto que no funcionará porque StringFormat requiere que su destino sea un tipo de cadena. Puede evitar esto utilizando un TextBlock en su lugar (que tiene una propiedad de texto) o colocando el Textblock como elemento secundario de la etiqueta:

<Label x:Name="myLabel"> <Label.Content> <TextBlock> <TextBlock.Text> <MultiBinding StringFormat="{}{0} - {1}"> <Binding Path="Lib1" /> <Binding Path="Lib2" /> </MultiBinding> </TextBlock.Text> </TextBlock> </Label.Content> </Label>

Me gustaría usar StringFormat para hacer algo así:

<Label x:Name="myLabel"> <Label.Content> <Multibinding StringFormat="{}{0} - {1}"> <Binding Path="Lib1" /> <Binding Path="Lib2" /> </MultiBinding> </Label.Content> </Label>

Sin embargo, no funciona y recibí este error:

MultiBinding falló porque no tiene un convertidor válido. MultiBindingExpression: el elemento objetivo es ''Label'' (Name = ''myLabel''); la propiedad de destino es ''Contenido'' (tipo ''Objeto'')

¿Hay alguna manera de hacer que este código funcione?


Para aquellos que se preguntan, también pueden dejar la etiqueta <Label.Content> de la respuesta de Leom Burke. Esto ahorra otras dos líneas de código.

<Label x:Name="myLabel"> <TextBlock> <TextBlock.Text> <MultiBinding StringFormat="{}{0} - {1}"> <Binding Path="Lib1" /> <Binding Path="Lib2" /> </MultiBinding> </TextBlock.Text> </TextBlock> </Label>


<Label> <AccessText> <MultiBinding StringFormat="{x:Static properties:Resources.MyText}"> <Binding Path="MyObj.MyProp" Mode="OneTime"/> </MultiBinding> </AccessText> </Label>

Donde Resources.MyText puede contener algo como "Fox salta sobre {0}".