Подтвердить что ты не робот

Наличие жестко закодированного текста со связыванием в TextBlock

В WPF существует ли способ, чтобы свойство Text для TextBlock содержало как жестко закодированный текст, так и конкретную привязку?

То, что я имею в виду, - это что-то вроде следующих (например, ниже не компилируется):

<TextBlock Text="Number of Fans: {Binding Artist.Fans.Count}"></TextBlock>
4b9b3361

Ответ 1

Существует, если вы находитесь .Net 3.5 SP1

<TextBlock Text="{Binding Path=Artist.Fans.Count, 
                 StringFormat='Number of Fans: {0}'}" />

Ответ 2

Используя приведенный выше подход:

<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>                    

Ответ 3

Используйте Binding.StringFormat:

<TextBlock Text="{Binding Artist.Fans.Count, StringFormat='Number of Fans: {0}'}"/>

Ответ 4

Здесь значение привязки (clouds.all) добавляется с помощью "%". Вы можете добавить любое значение после "\ {0 \}".

 <TextBlock Text="{Binding Path=clouds.all, StringFormat=\{0\}%}"/>

Ответ 5

С XAML с использованием Template 10 и MVVM:

Просто быть чистым:

  • По определению, привязка связывает значения со свойствами элементов управления.
  • В соответствии с парадигмой MVVM, реализованной в структуре "Шаблон 10", значения инициализируются в ViewModel, связанной с соответствующей страницей XAML.

Вот как можно жестко закодировать текст вместе со связыванием в свойстве 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>