我有一些用戶控件類:模擬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