需求很简单,就是文本框想要个placeholder的效果,中文的时候显示“姓名”,英文的时候显示“Name”,于是有了以下代码:

        <TextBox>
            <TextBox.Style>
                <Style TargetType="TextBox">
                    <Style.Triggers>
                        <Trigger Property="Text" Value="">
                            <Setter Property="Background">
                                <Setter.Value>
                                    <VisualBrush Opacity="0.3" Stretch="None" TileMode="None">
                                        <VisualBrush.Visual>
                                            <TextBlock Text="{DynamicResource Name}" FontSize="20"></TextBlock>
                                        </VisualBrush.Visual>
                                    </VisualBrush>
                                </Setter.Value>
                            </Setter>
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </TextBox.Style>
        </TextBox>

然后,动态切换成英文资源的时候,发现他还是中文的,晕。后来改成以下代码就OK了,不知何解?

                  <TextBox>
                        <TextBox.Style>
                            <Style TargetType="TextBox">
                                <Style.Triggers>
                                    <Trigger Property="Text" Value="">
                                        <Setter Property="Background" Value="{DynamicResource VBName}"></Setter>
                                    </Trigger>
                                </Style.Triggers>
                            </Style>
                        </TextBox.Style>
                    </TextBox>