如何将不同的内容应用于资源字典中样式的单个属性?

时间:2015-03-23 09:01:49

标签: wpf xaml

我有2个文本框,使用 AddItemTextBoxStyle

<TextBox x:Name="txtItemA" Style="{StaticResource AddItemTextBoxStyle}"></TextBox>

<TextBox x:Name="txtItemB" Style="{StaticResource AddItemTextBoxStyle}"></TextBox>

AddItemTextBoxStyle (这是资源字典中的一种风格)中,我有一个标签属性,用于设置文本框中的水印文字:

<Style x:Key="AddItemTextBoxStyle" TargetType="{x:Type TextBox}" BasedOn="{StaticResource CustomTextBoxStyle}">
    <Setter Property="Tag" Value="Type here" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type TextBox}">
               <TextBlock Style="{StaticResource WaterMarkTextStyle}" x:Name="WaterMarkLabel" Text="{TemplateBinding Tag}" />
            </ControlTemplate>
        </Setter.Value>
    </Setter.Property>
</Style>

默认情况下,水印文字为&#34;在此输入&#34;。但是,如果我希望两个文本框中的水印文本不同,例如:

  • Textbox txtItemA - &#34;在此输入项目A&#34;
  • Textbox txtItemB - &#34;在此输入项目B&#34;

我可以知道我该怎么办?由于样式位于资源字典中。

我尝试在线搜索,但仍然无法找到它的线索。

1 个答案:

答案 0 :(得分:2)

<TextBox x:Name="txtItemA" Style="{StaticResource AddItemTextBoxStyle}" Tag="Some wathermark" />
<TextBox x:Name="txtItemB" Style="{StaticResource AddItemTextBoxStyle}" Tag="Another watermarks" />

请注意,您的样式只设置了标记的默认值。实际值在控件实例中设置,模板绑定从实例获取值,而不是样式。