4

在 WPF 窗口中拖放一些控件(如 TextBox)后,您可以在 XAML 中看到以下行

<TextBox ... TextWrapping="Wrap" Text="TextBox" />

这些属性会自动插入到 XAML!只是在 XAML 中插入了一些特殊属性。

问题:

  • 为什么只有这些特殊属性(如TextBoxTextWrappingTextTextBox)会自动添加到 XAML 中?(有没有一种属性)?
  • 我想从 TextBox 继承一个类并防止自动插入TextWrapping属性。可能吗?(有没有一种属性)?
  • 是否有解决方案,在设计模式下(如这个TextWrappingTextBox)选择一些自动插入 XAML 的属性?
4

2 回答 2

3

您需要的是DefaultInitializer,它定义了从 ToolBox 拖动到设计视图时设置的默认值。

[Feature(typeof(myDefaults))]
public partial class UserControl1 : UserControl
{
    public UserControl1()
    {
        InitializeComponent();
    }

    public class myDefaults : DefaultInitializer
    {
        public override void InitializeDefaults(ModelItem item)
        {
            item.Name = "test";
        }
    }
}

然后将此控件拖放到表单上会导致

<local:UserControl1 x:Name="test" Width="100"/>
于 2013-08-15T22:05:01.333 回答
2

要为 wpf 控件设置默认值(例如,您希望所有 TextBox 的宽度为 30 像素,高度为 10 像素,边距为 5 像素),您可以定义样式。

如果您查看此处提供的示例,您可以看到默认 TextBlock 样式是如何定义并应用于所有 TextBlock 的。 http://msdn.microsoft.com/en-us/library/ms745683.aspx

<!--A Style that affects all TextBlocks-->
<Style TargetType="TextBlock">
  <Setter Property="HorizontalAlignment" Value="Center" />
  <Setter Property="FontFamily" Value="Comic Sans MS"/>
  <Setter Property="FontSize" Value="14"/>
</Style>

如果您确实想要更多的设计师体验,我建议您使用 Blend 而不是 Visual Studio Designer。

于 2013-08-15T21:09:20.817 回答