Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF共享属性_Wpf_Textbox_Styles - Fatal编程技术网

WPF共享属性

WPF共享属性,wpf,textbox,styles,Wpf,Textbox,Styles,我有一个问题,我想这是我在WPF中缺少的一些基本知识 我将默认宽度(generix.XML)设置为Textbox,并为Textbox设置一些最小宽度 <Style TargetType="{x:Type TextBox}"> <Setter Property="SnapsToDevicePixels" Value="True"/> <Setter Property="OverridesDefaultStyle" Value="True"/>

我有一个问题,我想这是我在WPF中缺少的一些基本知识

我将默认宽度(generix.XML)设置为Textbox,并为Textbox设置一些最小宽度

<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>

我有两个不同的控件来保存文本框。两个文本框的宽度相同。。 我需要向其中一个控件添加一些属性,该控件将声明textbox的宽度,并将覆盖其宽度声明,以textbox将“查找”此属性的方式

以下是一些描述我的要求的图纸:

更新:

我只是想我没有再描述一件重要的事情。 我有一些使用文本框的数据模板。正如我在上面所写的,我有两个控件,它们的数据类型(MyData)与我创建的DateTemplate相同,用于显示MyData。我希望每个控件将显示不同宽度的文本框(来自datatemple)

更新2: 这里还有一些代码

1-使用文本框的“我的数据”的数据模板

<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显示在两个不同的控件中。正如我之前写的,我希望每个控件都能以不同的宽度显示文本框

看起来我错过了一些基本的知识(附件?逻辑/视觉树?)


谢谢,Leon,好问题,DataTemplate中的主要思想是为某些数据提供特定的图形表示。您可以在中阅读更多信息。
如果您想自定义文本框,并在不同的用户控件中具有不同的属性,您可能需要使用。 问题是,如果您想要控制特定控件的属性(在本例中是带有一些边框的文本框),您应该使用ControlTemplate。 您的XAML应该如下所示:

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

使用它的控件将具有文本框(如您所定义的,带有边框):



为什么不设置文本框的Width属性?谢谢Amittai。请查看我问题中的更新。谢谢,Leon您可以添加简化版的XAML,它显示如何在DataTemplate中设置文本框,以及如何在控件中使用DataTemplate谢谢Amittai。我添加了一些代码。
<TextBox Grid.Column="1" Margin="10,1,10,1" HorizontalAlignment="Left" Content="{Binding}" Width="50"/>