我在运行时动态创建复选框,并在运行时应用样式。Designer 开发了一个类似复选框的控件,可在运行时应用。他在该复选框控件上放置了一个标签,以将复选框控件上的文本显示为数据库中的内容。但是当我在运行时应用复选框或标签的内容时,它会显示在由设计器开发的复选框控件的背面。如何利用标签控件在复选框控件上显示数据库中的内容。
请建议?
谢谢
我在运行时动态创建复选框,并在运行时应用样式。Designer 开发了一个类似复选框的控件,可在运行时应用。他在该复选框控件上放置了一个标签,以将复选框控件上的文本显示为数据库中的内容。但是当我在运行时应用复选框或标签的内容时,它会显示在由设计器开发的复选框控件的背面。如何利用标签控件在复选框控件上显示数据库中的内容。
请建议?
谢谢
在我看来,你的设计师忘记<ContentPresenter/>
在他的复选框模板中包含一个。如果没有ContentPresenter
,您作为评论添加的文本将永远不会显示。
以下是包含所需 ContentPresenter 的自定义 CheckBox ControlTemplate 示例:
<ControlTemplate TargetType="{x:Type CheckBox}">
<DockPanel>
<Border BorderThickness="1" BorderBrush="Black">
<Path x:Name="check" Width="10" Height="10"
Data=".... data for checkmark in checkbox ..." />
</Border>
<ContentPresenter/>
</DockPanel>
<ControlTemplate.Triggers>
<Trigger ... trigger for changing checkmark ... />
</ControlTemplate.Triggers>
</ControlTemplate>
您应该检查您的复选框样式。它应该是复选框标记下的样式中的标签(文本框)。这是 chekcbox 模板的几乎正确的代码:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Border Grid.Column="0">
<!--Place your mark here-->
</Border>
<Border Grid.Column="1">
<!--Place your label here-->
</Border>
</Grid>