Ответ 1
Существует, если вы находитесь .Net 3.5 SP1
<TextBlock Text="{Binding Path=Artist.Fans.Count,
StringFormat='Number of Fans: {0}'}" />
В WPF существует ли способ, чтобы свойство Text
для TextBlock
содержало как жестко закодированный текст, так и конкретную привязку?
То, что я имею в виду, - это что-то вроде следующих (например, ниже не компилируется):
<TextBlock Text="Number of Fans: {Binding Artist.Fans.Count}"></TextBlock>
Существует, если вы находитесь .Net 3.5 SP1
<TextBlock Text="{Binding Path=Artist.Fans.Count,
StringFormat='Number of Fans: {0}'}" />
Используя приведенный выше подход:
<TextBlock Text="{Binding Path="Artist.Fans.Count",
StringFormat='Number of Fans: {0}'}" />
Я нашел несколько ограничительным в том смысле, что не смог найти способ смелого лица внутри StringFormat и не мог использовать апостроф в StringFormat.
Вместо этого я пошел с таким подходом, который работал лучше для меня:
<TextBlock TextWrapping="Wrap">
<Run>The value</Run>
<Run Text="{Binding Path=MyProperty1, Mode=OneWay}" FontWeight="Bold" />
<Run>was invalid. Please enter it with the format... </Run>
<LineBreak/><LineBreak/>
<Run>Here is another value in the program</Run>
<Run Text="{Binding Path=MyProperty2, Mode=OneWay}" FontWeight="Bold" />
</TextBlock>
Используйте Binding.StringFormat
:
<TextBlock Text="{Binding Artist.Fans.Count, StringFormat='Number of Fans: {0}'}"/>
Здесь значение привязки (clouds.all) добавляется с помощью "%". Вы можете добавить любое значение после "\ {0 \}".
<TextBlock Text="{Binding Path=clouds.all, StringFormat=\{0\}%}"/>
С XAML с использованием Template 10 и MVVM:
Просто быть чистым:
Вот как можно жестко закодировать текст вместе со связыванием в свойстве Text:
<Page
...
xmlns:vm="using:doubleirish.ViewModels"
xmlns:sys="using:System"
xmlns:controls="using:Template10.Controls"
...
<Page.DataContext>
<vm:StocksViewModel x:Name="ViewModel" />
</Page.DataContext>
...
<controls:PageHeader ... Text="{x:Bind sys:String.Format('Ticker : {0}', ViewModel.Ticker)}">
...
</Page>