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}".