我有许多UserControl类:
> DataTypeWholeNumber
> DataTypeLine
> DataTypeDate
> DateTypeDuration
>等
它们都继承自一个普通的C#类,该类继承自没有连接XAML的UserControl.我不得不这样做,因为我收到错误,说XAML无法继承.
问题是每个UserControl的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>
有没有人遇到这个问题并找到了解决方案?
最佳答案 使用适用于基类的Style:
<Style TargetType="BaseClass">
<Setter Property="Control.Template">
<Control.Value>
<StackPanel Margin="{Binding Margin}">
<!-- Rest of code here -->
</Control.Value>
</Style>
另外,我怀疑每个基本类型都需要UserControls – 为什么不能在任何地方重用相同的UserControl?