DataTemplate中的UserControl无法正确绑定

时间:2015-04-30 15:42:15

标签: c# wpf binding user-controls

我一直在尝试创建自定义菜单。出于这个原因,我想使用ItemsControl以使其灵活。经过几个小时的头痛,我想出了如何制作它 - 有点。

我有自定义的ItemsControl" LiftMenu" (这还不是很多自定义但标准的)和一个名为" LiftItem"的UserControl。最后但并非最不重要的是,我得到了Model-class" LiftMenuItem"。

通过向LiftMenu添加新的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"/>

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

最后没有文字,没有边框。只有ProgressRing可见。

我该如何解决这个问题?这个ListItem控件应该与按钮类似,因此我需要做一些样式(动画,......)。我无法在普通的DataTemplate中执行此操作,但我不想错过WPF的绑定功能。这会使它相对不灵活。

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

0 个答案:

没有答案
相关问题