我有一些用户控件类:模拟XAML代码继承的最佳方式是什么?
- DataTypeWholeNumber
- DataTypeLine
- DataTypeDate
- DateTypeDuration
- 等
他们都来自一个普通的C#类继承它继承来自没有附加XAML的UserControl。我必须这样做,因为我得到错误,说XAML不能继承。
的问题是,XAML中每个用户控件,这些是基本相同,所以我想找到某种方式来至少效仿XAML继承,这样我就不必重复此代码为20的不同类:
<dataTypes:BaseDataType x:Class="TestDependencyProperty827.DataTypes.DataTypeLine"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:dataTypes="clr-namespace:TestDependencyProperty827.DataTypes">
<StackPanel Margin="{Binding Margin}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="{Binding LabelWidth}"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" Orientation="Horizontal">
<TextBlock Text="{Binding Label}" FontSize="14"/>
<TextBlock FontSize="14" Text=":"/>
</StackPanel>
<TextBox Grid.Column="1" FontSize="12" HorizontalAlignment="Left"
Text="{Binding Text}"
Width="{Binding Width}"/>
</Grid>
</StackPanel>
</dataTypes:BaseDataType>
有没有人遇到这个问题,并找到了解决办法呢?
我想要每个DataType的类的原因是对于更复杂的数据类型,如客户或合同,不仅仅是显示文本框,还包括下拉菜单,三个文本框等,以及不包含其他数据类型的特定数据类型的触发器和动画等。 – 2009-05-27 10:18:24
@Edward,您可能想要查看ContentPresenter和DataTemplateSelector,以了解在其他标准控件中可以拥有可变内容的方式。 WPF控件设计鼓励你赞成构造而不是继承。 – 2010-11-01 20:55:23