WPF共享属性

时间:2012-05-08 08:12:27

标签: wpf textbox styles

我有一个问题,我想这是我在WPF中遗漏的一些基本知识。

我将默认宽度(generix.XML)设置为文本框,文本框的最小宽度为

<Style TargetType="{x:Type TextBox}">
    <Setter Property="SnapsToDevicePixels" Value="True"/>
    <Setter Property="OverridesDefaultStyle" Value="True"/>
    <Setter Property="Foreground" Value="Black"/>
    <Setter Property="KeyboardNavigation.TabNavigation" Value="None"/>
    <Setter Property="FocusVisualStyle" Value="{x:Null}"/>
    <Setter Property="MinWidth" Value="50"/>
</Style>

我有两个不同的控件,其中包含文本框。两个文本框都有相同的宽度.. 我将一些属性添加到将声明文本框宽度的控件之一,并将覆盖其宽度声明,方式是文本框将“找到”此属性。

这里有一些描述我的要求:

controls

更新

我只是弄清楚我没有再描述一个导入的东西。 我有一些使用文本框的DataTemplate。正如我上面所写,我有两个具有相同DataType(MyData)的控件我还创建了DateTemplate来显示MyData。我希望每个控件都显示不同宽度的文本框(来自数据表)。

更新2: 这里有一些代码

1- dataTemplate到我的数据使用文本框

<DataTemplate DataType="{x:Type ml:MyData}">
    <Border  BorderBrush="Transparent" ClipToBounds="True"  Style="{StaticResource errorBorder}">
        <TextBox Text="{Binding MyText}"/>
    </Border>
</DataTemplate>

2-我使用使用文本框的datatemplate的方式。

<ContentPresenter Grid.Column="1" Margin="10,1,10,1" HorizontalAlignment="Left" Content="{Binding}" />

此contentPresentor已显示在两个不同的控件中。正如我之前写的,我希望每个控件都能以不同的宽度显示文本框

看起来我错过了一些基本的知识(附加的proerty?逻辑/可视树?)。

谢谢,Leon

1 个答案:

答案 0 :(得分:0)

很好的问题,DataTemplate的主要思想是你有一些数据的特定图形表示。您可以在MSDN中阅读更多相关信息 如果要自定义TextBox,并在不同的UserControl中具有不同的属性,则可能需要使用ControlTemplate。 问题是,如果要控制特定控件的属性(在本例中为带有边框的TextBox),则应使用ControlTemplate。 您的XAML应该类似于:

<ControlTemplate TargetType="{x:Type TextBox}">
        <--! define the ControlTemplate here with some Width property-->
<ControlTemplate>

并且使用它的Control将具有TextBox(如您所定义的那样,带有Border):

<TextBox Grid.Column="1" Margin="10,1,10,1" HorizontalAlignment="Left" Content="{Binding}" Width="50"/>
相关问题