我創建了一個自定義控制元件,它是一個 TextBox,其中包含一個 TexBlock。如果占位符文本(Directorio Archivo)為空,則此 TexBlock 消失。它可以作業并且非常適合我的初始需求,但現在我需要將該自定義控制元件與其他占位符文本重用。我是 WPF 的新手,現在對我來說有點不知所措。以下代碼顯示了一種特定情況的作業模板:
<Style x:Key="DefaultTextBox" TargetType="TextBox">
<Setter Property="IsReadOnly" Value="True"/>
<Setter Property="Margin" Value="10, 5"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TextBox">
<Border Background="#ffffff" BorderBrush="#000000" BorderThickness="1" CornerRadius="5" >
<Grid>
<TextBox x:Name="Directorio" Background="Transparent" BorderThickness="0" Margin="5" VerticalContentAlignment="Center" Text="{TemplateBinding Text}"/>
<TextBlock Foreground="#828282" HorizontalAlignment="Center" IsHitTestVisible="False" Margin="5" Text="Directorio Archivo">
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Style.Triggers>
<DataTrigger Binding="{Binding Text, ElementName=Directorio}" Value="">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
<Setter Property="Visibility" Value="Hidden"/>
</Style>
</TextBlock.Style>
</TextBlock>
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
現在我想重新使用模板并將文本“Directorio Archivo”替換為控制元件上定義的內容。我要更改的這部分代碼:
<TextBlock Foreground="#828282" HorizontalAlignment="Center" IsHitTestVisible="False" Margin="5" Text="{Templatebinding or binding?????}">
現在,如果我可以替換該占位符欄位的文本,例如這樣呼叫它:
<TextBox Grid.Row="0" Grid.Column="1" Margin="5,5,20,5" Style="{StaticResource DefaultTextBox}" TextBlock.Text="MyPlaceHolderText"/>
我已經嘗試了所有方法,但我很難理解 WPF 的作業原理,而且它的檔案不是很容易理解。
提前致謝
uj5u.com熱心網友回復:
您要么需要定義自定義依賴屬性來存盤文本的值,要么可以使用現有屬性,例如Tag:
<TextBox ... Tag="Directorio Archivo" />
然后修改模板以系結到此屬性:
<TextBlock Foreground="#828282" ... Text="{TemplateBinding Tag}">
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/436756.html
上一篇:應用主題更改時更改影像顏色
