Создание водяного знака WPF в чистом XAML

Это для элемента управления TextBox на экране входа в систему, где TextBox содержит имя пользователя. Я хочу, чтобы TextBox работал следующим образом:

When the content is empty the content should be set to "Username".

When the TextBox is clicked I want the content to be set to "" i.e; nothing (unless the content has already been edited by the user).

Это довольно стандартная функция в наше время, что-то вроде этогоWordPress Логин (вверху страницы).coudn't think of a better example than this I'm afraid :)

Так или иначе, я уже сделал это с помощью ViewModel, и он работает хорошо, но я хотел бы знать, можно ли это сделатьpurely from the XAML end, Бизнес-логика не имеет значения, поэтому я думаю, что было бы лучше сделать это без виртуальной машины.

 Robaticus21 мая 2012 г., 17:19
Я сомневаюсь, что вы сможете сделать это в «чистом xaml». Кроме того, в приведенном примере единственным кодом является преобразователь видимости. В игре нет бизнес-логики или модели представления.
 Robaticus21 мая 2012 г., 16:55
возможный дубликатWatermark TextBox in WPF
 Drahcir21 мая 2012 г., 17:00
@Robaticus: Эти ответы показаны только с помощью логики кода, я хочу сделать это с помощью чистого XAML.

Ответы на вопрос(4)

Чистый XAML:

<Grid>
    <TextBox  Width="250"  VerticalAlignment="Center" HorizontalAlignment="Left" x:Name="SearchTermTextBox" Margin="5"/>
    <TextBlock IsHitTestVisible="False" Text="Enter Search Term Here" VerticalAlignment="Center" HorizontalAlignment="Left" Margin="10,0,0,0" Foreground="DarkGray">
        <TextBlock.Style>
            <Style TargetType="{x:Type TextBlock}">
                <Setter Property="Visibility" Value="Collapsed"/>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding Text, ElementName=SearchTermTextBox}" Value="">
                        <Setter Property="Visibility" Value="Visible"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </TextBlock.Style>
    </TextBlock>
</Grid>

Взято из:https://stackoverflow.com/a/21672408/4423545

Вы пытались искать в интернете? Похоже, это сообщение от stackoverflow (первое в моих результатах bing) поможет Водяной знак / текст подсказки / заполнитель TextBox в WPF

 Drahcir21 мая 2012 г., 16:59
Спасибо, но эти ответы только показывают, как это сделать в коде. Я хочу быть в состоянии сделать это исключительно из XAML.
 Drahcir21 мая 2012 г., 17:38
Да, я думаю, что код в порядке, и я уже сделал это так, я просто подумал, что может быть более уместно делать все это в xaml. Ссылка на проект кода в BA - довольно хороший способ.
 21 мая 2012 г., 17:34
Использование в xaml имеет большую ценность, но использование кода также вполне допустимо. Если вы ищете чисто решение xaml, вам придется использовать DataTriggers и / или VisualState.

Расширенный WPF Toolkit имеетТекстовое поле водяного знака это будет делать то, что вы просите в чистом XAML. Есть и другие библиотеки.

Хорошая вещь об использовании Extended WPF Toolkit заключается в том, что вы можете получить его в Nuget, а также устанавливать и устанавливать обновления непосредственно через Visual Studio.

Решение Вопроса
 Drahcir21 мая 2012 г., 17:33
Спасибо, ссылка на код проекта решила мою проблему.

Ваш ответ на вопрос