Как отображать значение заполнителя в WPF Visual Studio Designer, пока не будет загружено реальное значение - PullRequest
12 голосов
/ 30 марта 2009

Я опытный разработчик C #, но новичок в WPF. Основной вопрос (я думаю), на который я не могу найти ответ с помощью веб-поиска. Вот упрощенный вариант использования ...

Я хочу отобразить строку в текстовом блоке WPF. Поэтому я пишу код C # в коде моего элемента управления XAML ...

public class MyCoolControl : UserControl
{
   public void InitializeMyCoolControl()
   {
      this.DataContext = "SomeStringOnlyAvailableAtRuntime"; // Perhaps from a database or something...
   }
}

И я настроил свой XAML так:

<UserControl ... snip...>
   <!-- Bind the textblock to whatever's in the DataContext -->
   <TextBlock Text="{Binding}"></TextBlock>
</UserControl>

Прекрасно работает, я вижу значение SomeStringOnlyAvailableAtRuntime, когда я выполняю свое приложение. Однако я не вижу ничего во время разработки с использованием XAML Designer в Visual Studio 2008.

Как увидеть значение заполнителя (что-либо) для текстового блока во время разработки?

Спасибо!

-Mike

Ответы [ 4 ]

19 голосов
/ 30 марта 2009

Я часто использую FallbackValue на привязке, чтобы было на что посмотреть, пока я проектирую пользовательские элементы управления. Например:

<TextBlock Text={Binding Path=AverageValue, FallbackValue=99.99} />

Однако, поскольку FallbackValue применяется не только во время разработки, это может быть неуместно, если вы хотите использовать FallbackValue во время выполнения по другим причинам.

2 голосов
/ 30 марта 2009

В вашем примере вам может понадобиться использовать TargetNullValue, а не FallbackValue, поскольку выражение привязки, вероятно, будет null, поскольку DataContext равно null во время разработки.

FallBackValue используется, если Path, данное в привязке, не существует, но, поскольку путь не указан, я предполагаю, что DataContext будет тогда оцениваться как null.

<UserControl ... snip...>
  <!-- Bind the textblock to whatever's in the DataContext -->   
    <TextBlock Text="{Binding TargetNullValue=Nothing to see}"></TextBlock>
</UserControl>

Также обратите внимание, что необходим .NET Framework 3.5 SP1, поскольку эти два дополнительных свойства были добавлены в SP1.

0 голосов
/ 05 марта 2010

Не лучший ли вариант в этом сценарии, чтобы объект MultiValueConverter или ViewModel обрабатывал загрузку объекта и обновлял свойство зависимости для вас?

0 голосов
/ 30 марта 2009

Я не знаю, как это сделать с помощью редактора Visual Studio, но вы можете сделать это с помощью Expression Blend.

Вот и статья, описывающая, как этого добиться.

Я надеюсь, что MS объединит функциональность Blend и Visual Studio вместе, потому что один пакет выполняет одно, а другой - что-то глупое. Особенно, когда они из одной компании.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...