C# DataTemplate中的UserControl未正确绑定

C# DataTemplate中的UserControl未正确绑定,c#,wpf,binding,user-controls,C#,Wpf,Binding,User Controls,我一直在尝试创建一个自定义菜单。出于这个原因,我想使用ItemsControl以使其灵活。头痛了好几个小时后,我终于想出了办法——有点 我有一个自定义的ItemsControl“LiftMenu”(虽然还不是很自定义,但是很标准)和一个名为“LiftItem”的UserControl。最后但并非最不重要的是,我得到了模型类“LiftMenuItem” 通过向LIFTMENUS添加新的LiftMenuItem,它应该将新的LiftItem控件显示为相应的项。到目前为止,一切都很好,我成功地让它工作

我一直在尝试创建一个自定义菜单。出于这个原因,我想使用ItemsControl以使其灵活。头痛了好几个小时后,我终于想出了办法——有点

我有一个自定义的ItemsControl“LiftMenu”(虽然还不是很自定义,但是很标准)和一个名为“LiftItem”的UserControl。最后但并非最不重要的是,我得到了模型类“LiftMenuItem”

通过向LIFTMENUS添加新的LiftMenuItem,它应该将新的LiftItem控件显示为相应的项。到目前为止,一切都很好,我成功地让它工作了

在LiftItem控件中,我像在普通DataTemplate中一样绑定:带路径的普通绑定,仅此而已。通常情况下,这很好,因为DataTemplate已经将其上下文设置为模型类型

但是现在我得到了一个空控件,它什么也不做,什么也不显示,因为绑定不起作用

我是这样实施的:

<menu:LiftMenu HorizontalAlignment="Stretch" VerticalAlignment="Stretch" MinHeight="200" Background="#80A8A8A8" Margin="5,0,0,0">
<menu:LiftMenu.ItemsPanel>
    <ItemsPanelTemplate>
        <StackPanel Orientation="Vertical" />
    </ItemsPanelTemplate>
</menu:LiftMenu.ItemsPanel>
<menu:LiftMenu.ItemTemplate>
    <DataTemplate DataType="{x:Type menu:LiftMenuItem}">
        <menu:LiftItem />
    </DataTemplate>
</menu:LiftMenu.ItemTemplate>
<menu:LiftMenuItem Header="Test1"/>


最后没有文字,没有边框。只有前进环是可见的

我怎样才能解决这个问题?这个ListItem控件应该类似于按钮,因此我需要做一些样式设置(动画…)。我不能在普通的DataTemplate中执行此操作,但我不想错过WPF在这方面的绑定特性。这将使它相对不灵活


有什么问题吗?我可能只是错过了一些DataContext,但我不知道会是什么。

显然,您忘记在TextBlock上设置
Grid.Column=“1”
。而且
BorderBrush=“{Binding LabelColor}”
看起来可疑。LabelColor真的是画笔吗?在长时间的编程会话后再次出现错误。你说得对。几分钟前,我“偶然”改变了它,并对它突然起作用感到惊讶。但是谢谢你的提示,我忽略了LabelColor必须是SolidColorBrush类型。
<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="4"/>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="Auto"/>
    </Grid.ColumnDefinitions>
    <Border x:Name="border" BorderBrush="{Binding LabelColor}" BorderThickness="1" HorizontalAlignment="Left" Height="Auto" Margin="0" 
        VerticalAlignment="Stretch" Width="4" Background="{Binding BorderBrush, ElementName=border}"/>

    <TextBlock Text="{Binding Header}" TextTrimming="CharacterEllipsis" Margin="5,0,5,0" HorizontalAlignment="Left" VerticalAlignment="Center"
                Foreground="White" />

    <controls:ProgressRing x:Name="ring" Grid.Column="2" HorizontalAlignment="Right" Stroke="#ffff8000" VerticalAlignment="Center" 
        Minimum="0" Maximum="100" Value="{Binding ProcessValue}" IsIndeterminate="{Binding ProcessIndeterminate}" Visibility="{Binding ProcessVisibility}"
        Width="20" Height="20" Radius="10" Margin="2,0,2,0" />
</Grid>