【问题标题】:How to set TextAlignment property on a TextBox that is part of a Content of other element?如何在属于其他元素内容的 TextBox 上设置 TextAlignment 属性?
【发布时间】:2012-03-13 05:06:04
【问题描述】:

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

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

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

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

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

因此任务:将 DataField Text 设置为右对齐,而不影响其样式,并对特定 DataField 执行此操作。

我希望现在更清楚了。

【问题讨论】:

  • 你要添加什么样的元素?
  • 我没有添加任何东西,它们已经存在于这个元素的内容中。这是第 3 方元素。假设您有一个 ListBoxItem,它的 Content 属性中有一个 TextBlock 和 TextBox。我需要设置 TextBox 的 TextAligned 属性而不干扰 ListBoxItem 的样式。

标签: silverlight xaml silverlight-5.0


【解决方案1】:

创建一个特定的文本框样式怎么样?

<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”样式的情况下做到这一点的最佳方式

希望对你有帮助

【讨论】:

  • 我没有关注你。 xaml 中没有声明 TextBox,所以我无法访问它。我将更新我的问题以用不同的示例进行解释,以使其更清楚。
  • 您是将文本框添加到代码隐藏或其他类中的元素吗?
  • 请查看已编辑的问题,我已经给出了 DataField 的示例,如果您知道如何使用 DataField 实现我想要的,那么我会接受答案。
猜你喜欢
  • 1970-01-01
  • 2015-05-06
  • 1970-01-01
  • 2010-12-05
  • 1970-01-01
  • 2015-02-12
  • 1970-01-01
  • 1970-01-01
  • 2012-02-13
相关资源
最近更新 更多