WPF Stackpanel 自定义控件之间的间距
WPF Stackpanel spacing between custom controls
如何在堆栈面板内的某些自定义控件之间获得 space?我以前用文本框、按钮等就做过,但我不能用自定义控件来做。
这是我目前得到的代码
<Grid>
<StackPanel x:Name="spTasks" CanVerticallyScroll="True">
<StackPanel.Resources>
<Style TargetType="local:SmartTaskOverview">
<Setter Property="Margin" Value="50,50,50,50" />
</Style>
</StackPanel.Resources>
</StackPanel>
</Grid>
感谢您的帮助
FrameworkElement
及其子 类 不只是使用控件类型查找资源,它们还使用 DefaultStyleKey 的值。对于大多数子 类 控件(以及其他一些 FrameworkElement
)来说,在静态构造函数中覆盖此依赖项 属性 的默认值是控件类型的常见做法,但是 UserControl
的子 类 通常不会打扰。
static Foo()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(Foo), new FrameworkPropertyMetadata(typeof(Foor));
}
如果您没有在 SmartTaskOverview
中执行此操作,那么它将使用 typeof(UserControl)
作为资源键而不是 typeof(SmartTaskOverview)
.[=22= 来寻找其默认样式]
注意:UserControl
将需要一个控件模板来显示其子项,这通常由 UserControl
的默认样式提供,但通过更改键,它将找到您的默认样式。要解决此问题,只需将您的样式基于 UserControl
样式即可。
<Style TargetType="local:SmartTaskOverview" BasedOn="{StaticResource {x:Type UserControl}}">
<Setter Property="Margin" Value="50,50,50,50" />
</Style>
或者您可以自己提供一个简单的模板。
<Style TargetType="local:SmartTaskOverview">
<Setter Property="Margin" Value="50,50,50,50" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:SmartTaskOverview}">
<ContentPresenter />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
如何在堆栈面板内的某些自定义控件之间获得 space?我以前用文本框、按钮等就做过,但我不能用自定义控件来做。
这是我目前得到的代码
<Grid>
<StackPanel x:Name="spTasks" CanVerticallyScroll="True">
<StackPanel.Resources>
<Style TargetType="local:SmartTaskOverview">
<Setter Property="Margin" Value="50,50,50,50" />
</Style>
</StackPanel.Resources>
</StackPanel>
</Grid>
感谢您的帮助
FrameworkElement
及其子 类 不只是使用控件类型查找资源,它们还使用 DefaultStyleKey 的值。对于大多数子 类 控件(以及其他一些 FrameworkElement
)来说,在静态构造函数中覆盖此依赖项 属性 的默认值是控件类型的常见做法,但是 UserControl
的子 类 通常不会打扰。
static Foo()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(Foo), new FrameworkPropertyMetadata(typeof(Foor));
}
如果您没有在 SmartTaskOverview
中执行此操作,那么它将使用 typeof(UserControl)
作为资源键而不是 typeof(SmartTaskOverview)
.[=22= 来寻找其默认样式]
注意:UserControl
将需要一个控件模板来显示其子项,这通常由 UserControl
的默认样式提供,但通过更改键,它将找到您的默认样式。要解决此问题,只需将您的样式基于 UserControl
样式即可。
<Style TargetType="local:SmartTaskOverview" BasedOn="{StaticResource {x:Type UserControl}}">
<Setter Property="Margin" Value="50,50,50,50" />
</Style>
或者您可以自己提供一个简单的模板。
<Style TargetType="local:SmartTaskOverview">
<Setter Property="Margin" Value="50,50,50,50" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:SmartTaskOverview}">
<ContentPresenter />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>