如何在作为其他元素的内容的一部分的TextBox上设置TextAlignment属性



我有一个元素,它的Content属性中有TextBlock和TextBox。我需要在不干扰控件当前样式的情况下为TextBox设置TextAlignment,所以我应该让它以某种方式与SetterProperty和xaml一起工作。

这可能吗?怎么可能?我不想用自己的控件重新创建Content,也不想通过样式来设置它,因为样式可以在运行时更改,我想保持样式的原样。

编辑:DataForm就是一个例子。DataForm由几个DataField元素组成。每个DataField都由一个Label和输入控件组成。现在,通常我可以做这个

<DataField Label="{Binding ...}">
    <TextBox Text="{Binding ...}" TextAlignment="Right" />
</DataField>

但如果我这样做,我将失去DataField的样式,这是我想要避免的。那么,有没有一种方法可以访问DataField的TextAlignment属性,这样我就可以将其设置为Right,但不是所有的,只是我想要的(例如数字)。这就是为什么它应该在DataField的特定实例上执行。

因此,任务是:在不干扰其样式的情况下,将DataField Text设置为正确对齐,并对特定的DataField执行此操作。

我希望现在更清楚了。

创建一个特定的TextBox样式怎么样?

<Style x:Key="AlignedTextBoxStyle" TargetType="TextBox">
    <Setter Property="HorizontalAlignment" Value="Right"></Setter>
    <Setter Property="VerticalAlignment" Value="Center"></Setter>
</Style>

通过这种方式,您可以通过属性"样式"在xaml上设置它

<TextBox Style="AlignedTextBoxStyle"></TextBox>

如果你是动态添加的,你也可以这样做:

TextBox myTb = new TextBox();
myTb.Style = (Style)Application.Current.Resources["AlignedTextBoxStyle"];

我认为这是在不干扰"ListBoxItem"风格的情况下做到这一点的最佳方式

希望它能帮助

最新更新