将运行时标签作为内容添加到复选框wpf中

将运行时标签作为内容添加到复选框wpf中,wpf,mvvm,mvvm-light,Wpf,Mvvm,Mvvm Light,我在运行时动态创建复选框,并在运行时应用样式。设计器开发了一个类似于复选框的控件,我将在运行时应用该控件。他在checkbox控件上添加了一个标签,将checkbox控件上的文本显示为数据库中的内容。但当我在运行时应用checkbox或label的内容时,它会显示在设计器开发的checkbox控件的后面。如何使用Label控件在checkbox控件上显示数据库中的内容 好心的建议 谢谢您应该检查您的复选框样式。应该是复选框标记下liyng样式的labeltextbox。下面是用于chekcbox

我在运行时动态创建复选框,并在运行时应用样式。设计器开发了一个类似于复选框的控件,我将在运行时应用该控件。他在checkbox控件上添加了一个标签,将checkbox控件上的文本显示为数据库中的内容。但当我在运行时应用checkbox或label的内容时,它会显示在设计器开发的checkbox控件的后面。如何使用Label控件在checkbox控件上显示数据库中的内容

好心的建议


谢谢

您应该检查您的复选框样式。应该是复选框标记下liyng样式的labeltextbox。下面是用于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>

我觉得你的设计师好像忘了在他的复选框模板中包含一个。如果没有ContentPresenter,将永远不会显示作为注释添加的文本

以下是包含所需ContentPresenter的自定义复选框控件模板的示例:

<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>

但我在运行时应用了他的风格。您可以像普通复选框一样选中或取消选中该选项。我想将其上的文本显示为标签内容。如果删除样式,则“正常”复选框将与其内容一起出现。比如:复选框早餐我需要一个早餐在复选框的顶部作为标签的内容。无论何时应用样式,控件模板都是错误的。复选标记必须在左侧,标签内容必须放在其他可用空间。通过此链接提供复选框样式和相应的控件模板。检查controltemplate的布局,并在该示例中给出。它可以帮助您找出复选框有如此奇怪行为的原因。请发布您的ControlTemplate。我的猜测是,你把标签放在复选标记后面的一层中,但仅此而已——只是猜测而已。如果你发布你的ControlTemplate,你可能会很快得到答案。