Как отобразить значение placeholder в WPF Visual Studio Designer, пока не будет загружено реальное значение
Я опытный разработчик С#, но новичок в WPF. Основной вопрос (я думаю), что я не могу найти ответ на поиск в Интернете. Здесь упрощенный пример использования...
Я хочу показать строку в текстовом блоке WPF. Поэтому я пишу код С# в codebehind моего элемента управления 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 in the DataContext -->
<TextBlock Text="{Binding}"></TextBlock>
</UserControl>
Отлично работает, я могу увидеть значение "SomeStringOnlyAvailableAtRuntime" при выполнении моего приложения. Тем не менее, я ничего не вижу в Design Time, используя Visual Studio 2008 XAML Designer.
Как я могу увидеть значение-заполнитель (что-либо) для текстового блока во время разработки?
Спасибо!
-Mike
Ответы
Ответ 1
Я часто использую FallbackValue
для привязки, чтобы иметь возможность посмотреть, когда я создаю пользовательские элементы управления. Например:
<TextBlock Text={Binding Path=AverageValue, FallbackValue=99.99} />
Однако, поскольку FallbackValue
применяется не только во время разработки, это может оказаться неприемлемым, если вы хотите использовать FallbackValue
во время выполнения по другим причинам.
Ответ 2
В вашем примере вам может потребоваться использовать TargetNullValue
, а не FallbackValue
, поскольку выражение привязки, вероятно, будет null
, поскольку DataContext
- null
во время разработки.
FallbackValue
используется, если Path
, указанный в привязке, не существует, но поскольку путь не указан, я бы предположил, что DataContext
будет оцениваться как null
.
<UserControl ... snip...>
<!-- Bind the textblock to whatever in the DataContext -->
<TextBlock Text="{Binding TargetNullValue=Nothing to see}"></TextBlock>
</UserControl>
Также обратите внимание, что .NET Framework 3.5 SP1 необходим, поскольку эти два дополнительных свойства были добавлены в SP1.
Ответ 3
Я не знаю, как это сделать с редактором Visual Studio, но вы можете сделать это с помощью Expression Blend.
Вот и статья, описывающая, как достичь этого.
Я надеюсь, что MS объединит функциональность Blend и Visual Studio вместе, потому что один пакет делает одно, а другое - немного глупо. Особенно, когда они из одной компании.
Ответ 4
Не лучший вариант в этом сценарии, чтобы объект MultiValueConverter или ViewModel обрабатывал загрузку объекта и обновлял свойство зависимостей для вас?