WPF: Использование StringFormat для форматирования заголовка GroupBox

Сначала я создал обычный элемент GroupBox:

MainWindow.xaml
<GroupBox x:Name="gBoxInfo" Header="Filename:" Grid.Row="1"/>

Затем я попытался отобразить после двоеточия имя файла, для этого я добавил к записи привязку и попытался вывести имя файла из переменной:

MainWindow.xaml
<GroupBox x:Name="gBoxInfo" Header="{Binding FileName, StringFormat=Filename: {0}}" Grid.Row="1"/>

Здесь FileName — это свойство, описанное в коде MainWindow.xaml.cs:

MainWindow.xaml.cs
  private string _FileName;
  public string FileName
  {
    get
    {
      return _FileName;
    }
    set
    {
      if (_FileName != value)
      {
        _FileName = value;
        OnPropertyChanged("FileName");
      }
    }
  }

Но в результате было выведено только имя файла без надписи Filename:
В редакторе XAML было подчёркнуто начало слова Filename и при наведении мышки выдавалось такое сообщение:

No DataContext found for Binding ‘Filename: {0}’

Я подумал, что при такой форме записи, Filename воспринимался как переменная, а не как часть выводимой строки. Пришлось искать дальше. У меня не было много времени для поиска идеального решения, но вот такой вариант решил проблему с выводом текста и значения переменной:

MainWindow.xaml
<GroupBox x:Name="gBoxInfo1" Grid.Row="0">
    <GroupBox.Header>
        <TextBlock Text="{Binding FileName, StringFormat='Filename: {0}'}"/>
    </GroupBox.Header>
</GroupBox>

При такой записи есть ещё один плюс — можно в текст вставить символ кавычек:

MainWindow.xaml
<GroupBox x:Name="gBoxInfo1" Grid.Row="0">
    <GroupBox.Header>
        <TextBlock Text="{Binding FileName, StringFormat='Filename: "{0}"'}"/>
    </GroupBox.Header>
</GroupBox>
В этом случае у StringFormat также появляется сообщение об ошибке No DataContext found for Binding ‘Filename: {0}’, но при этом всё работает корректно.

 

Если есть какие-то комментарии или замечания, будет интересно услышать.



Подписаться
Уведомление о
guest
0 Комментарий
Inline Feedbacks
View all comments