gpt4 book ai didi

wpf - 模拟 XAML 代码继承的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-04 23:31:30 28 4
gpt4 key购买 nike

我有许多 UserControl 类:

  • DataTypeWholeNumber
  • 数据类型行
  • 数据类型日期
  • 日期类型持续时间

  • 它们都继承自一个普通的 C# 类,该类继承自 UserControl,而 UserControl 没有附加 XAML。我必须这样做,因为我收到了 错误说 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>

    有没有人遇到过这个问题并找到了解决方案?

    最佳答案

    使用适用于基类的样式:

    <Style TargetType="BaseClass">
    <Setter Property="Control.Template">
    <Control.Value>
    <StackPanel Margin="{Binding Margin}">
    <!-- Rest of code here -->
    </Control.Value>
    </Style>

    另外,我质疑每种基本类型都需要 UserControls - 为什么你不能在任何地方重用相同的 UserControl?

    关于wpf - 模拟 XAML 代码继承的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/906410/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com