WPF共享属性
我有一个问题,我想这是我在WPF中缺少的一些基本知识 我将默认宽度(generix.XML)设置为Textbox,并为Textbox设置一些最小宽度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"/>
<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"/>