namespace NeoUI.Controls; /// /// CodeBox 控件用于在用户界面中展示代码片段,支持标题、描述和实际代码内容的自定义。通过该控件,开发者能够方便地嵌入示例代码或文档说明到应用中。 /// /// /// 本控件扩展了ContentControl类,提供了丰富的属性来定制显示的内容及样式,包括但不限于:标题(Title)、描述(Description)以及代码主体(Code)。此外,还支持使用DataTemplate进一步个性化每个部分的表现形式,使得UI设计更加灵活多样。 /// public class CodeBox : ContentControl { #region Properties /// /// 用于获取或设置CodeBox控件标题文本的依赖属性。此属性允许用户直接设置简单的字符串作为标题内容。 /// /// /// 通过使用TitleProperty,可以轻松地在XAML或代码中为CodeBox控件指定一个标题。此属性支持数据绑定和动画。 /// public static readonly DependencyProperty TitleProperty = DependencyProperty.Register(nameof(Title), typeof(string), typeof(CodeBox), new PropertyMetadata(string.Empty)); /// /// /// public string Title { get => (string)GetValue(TitleProperty); set => SetValue(TitleProperty, value); } /// /// 用于获取或设置标题内容模板的依赖属性。此属性支持通过DataTemplate来自定义标题部分的视觉呈现。 /// /// /// TitleTemplateProperty 允许用户使用DataTemplate定义标题的具体布局和样式,从而实现更加灵活的内容展示。 /// 该属性适用于需要对标题文本进行复杂格式化或自定义显示的情况。 /// public static readonly DependencyProperty TitleTemplateProperty = DependencyProperty.Register(nameof(TitleTemplate), typeof(DataTemplate), typeof(CodeBox), new PropertyMetadata(null)); /// /// 用于获取或设置CodeBox控件标题模板的依赖属性。此属性允许用户自定义标题的显示样式。 /// /// /// 通过使用TitleTemplate,可以在XAML或代码中为CodeBox控件指定一个数据模板来控制标题的外观。此属性支持复杂的数据绑定和可视化效果,使得标题可以包含更多的UI元素而不只是简单的文本。 /// public DataTemplate TitleTemplate { get => (DataTemplate)GetValue(TitleTemplateProperty); set => SetValue(TitleTemplateProperty, value); } /// /// /// public static readonly DependencyProperty DescriptionProperty = DependencyProperty.Register(nameof(Description), typeof(string), typeof(CodeBox), new PropertyMetadata(string.Empty)); /// /// /// public string Description { get => (string)GetValue(DescriptionProperty); set => SetValue(DescriptionProperty, value); } /// /// 用于获取或设置描述内容模板的依赖属性。此属性支持通过DataTemplate来自定义描述部分的视觉呈现。 /// /// /// DescriptionTemplateProperty 允许用户使用DataTemplate定义描述信息的具体布局和样式,从而实现更加灵活的内容展示。 /// 该属性适用于需要对描述文本进行复杂格式化或自定义显示的情况。 /// public static readonly DependencyProperty DescriptionTemplateProperty = DependencyProperty.Register(nameof(DescriptionTemplate), typeof(DataTemplate), typeof(CodeBox), new PropertyMetadata(null)); /// /// 获取或设置用于描述内容的模板。 /// /// /// 该属性允许用户自定义描述内容的显示样式。通过设置DescriptionTemplate,可以使用DataTemplate来定义描述部分的具体布局和外观。 /// 这对于需要以特定格式展示描述信息的情况非常有用,例如添加图标、调整字体样式或者进行其他视觉上的定制。 /// public DataTemplate DescriptionTemplate { get => (DataTemplate)GetValue(DescriptionTemplateProperty); set => SetValue(DescriptionTemplateProperty, value); } /// /// 获取或设置代码框中显示的代码字符串。 /// /// /// 该属性允许用户指定在CodeBox控件内显示的具体代码内容。通过绑定或直接赋值的方式,可以动态改变显示的代码文本。 /// 使用此属性时,可以通过设置CodeTemplate来自定义代码的展示样式。 /// public static readonly DependencyProperty CodeProperty = DependencyProperty.Register(nameof(Code), typeof(string), typeof(CodeBox), new PropertyMetadata(string.Empty)); /// /// 获取或设置代码框中显示的代码字符串。 /// /// /// 该属性允许用户指定在CodeBox控件内显示的具体代码内容。通过绑定或直接赋值的方式,可以动态改变显示的代码文本。 /// 使用此属性时,可以通过设置CodeTemplate来自定义代码的展示样式。 /// public string Code { get => (string)GetValue(CodeProperty); set => SetValue(CodeProperty, value); } /// /// 用于定义代码块显示模板的依赖属性。此属性允许用户自定义代码内容的呈现方式。 /// public static readonly DependencyProperty CodeTemplateProperty = DependencyProperty.Register(nameof(CodeTemplate), typeof(DataTemplate), typeof(CodeBox), new PropertyMetadata(null)); /// /// 用于定义代码块显示模板的属性。通过设置此属性,用户可以自定义代码内容的显示方式。 /// public DataTemplate CodeTemplate { get => (DataTemplate)GetValue(CodeTemplateProperty); set => SetValue(CodeTemplateProperty, value); } #endregion #region Constructors static CodeBox() { DefaultStyleKeyProperty.OverrideMetadata(typeof(CodeBox), new FrameworkPropertyMetadata(typeof(CodeBox))); } //public CodeBox() //{ // SetResourceReference(StyleProperty, typeof(CodeBox)); //} #endregion }