Caliburn在DevExpress NavBarControl上表现不佳

时间:2011-02-23 17:42:20

标签: wpf devexpress caliburn

有没有人对Caliburn和DevExpress NavBarControl有任何经验。我试图将NavBarItems列表绑定到我的View Model。这不起作用,我确定这是因为Caliburn的绑定。

e.g。

<dxnb:NavBarControl x:Name="NavigationBar">
    <dxnb:NavBarControl.Groups>
        <dxnb:NavBarGroup x:Name="NavigationBarGroup" Content="{Binding PluginPresenter}" ImageSource="/Images/Icons/Group.png">
        </dxnb:NavBarGroup>
    </dxnb:NavBarControl.Groups>
    <dxnb:NavBarControl.View>
        <dxnb:NavigationPaneView IsExpandButtonVisible="False"/>
    </dxnb:NavBarControl.View>
</dxnb:NavBarControl>

public class ShellViewModel : PropertyChangeBase
{
   public NavBarItemCollection Plugins { get; set; }
   public NavBarGroup NavigationBarGroup { get; set; }
}

1 个答案:

答案 0 :(得分:0)

我刚刚开始关注Caliburn Micro。但是,我做了一些关于使用带有MVVM模式的DevExpress导航栏的研究。我向开发团队询问了一个例子。他们说他们的控制中存在一个阻止它工作的错误。他们确实给出了一个解决方案的例子。链接在这里: http://www.devexpress.com/Support/Center/p/Q347737.aspx

我查看了他们的解决方案,这对我来说太复杂了。希望补丁即将推出。

基思

<强>更新 我没有意识到链接不起作用。以下是该解决方案的更详细说明:

  1. 为导航栏创建用户控件:

    <UserControl x:Class="NavBarMVVM.View.MainView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:dxn="http://schemas.devexpress.com/winfx/2008/xaml/navbar"
    xmlns:ext="clr-namespace:NavBarExtensions;assembly=NavBarExtensions"
    xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity">
    <Grid>
        <dxn:NavBarControl x:Name="navBar">
            <dxn:NavBarControl.View>
                <dxn:NavigationPaneView/>
            </dxn:NavBarControl.View>
            <i:Interaction.Behaviors>
                <ext:NavBarMVVMAttachedBehavior ItemsSource="{Binding}">
                    <ext:NavBarMVVMAttachedBehavior.GroupStyle>
                        <Style TargetType="ext:NavBarGroupWrapper">
                            <Setter Property="Header" Value="{Binding Caption}"/>
                            <Setter Property="ItemsSource" Value="{Binding ItemsViewModel}"/>
                        </Style>
                    </ext:NavBarMVVMAttachedBehavior.GroupStyle>
                    <ext:NavBarMVVMAttachedBehavior.ItemStyle>
                        <Style TargetType="ext:NavBarItemWrapper">
                            <Setter Property="Content" Value="{Binding Name}"/>
                            <Setter Property="ImageSource" Value="{Binding PhotoImageSource}"/>
                            <Setter Property="Command" Value="{Binding ClickItemCommand}"/>
                        </Style>
                    </ext:NavBarMVVMAttachedBehavior.ItemStyle>
                </ext:NavBarMVVMAttachedBehavior>
            </i:Interaction.Behaviors>
    
        </dxn:NavBarControl>
    </Grid>
    

  2. 两个Target类型是两个名为* wrapper的类。他们做绑定像:   BindingOperations.SetBinding(NavBarGroup,NavBarGroup.ContentProperty,new Binding(“Content”){Source = this});

    请注意,这个引用了一个名为NavBarGroup的类。有四个帮助组。 NavBarGroup,NavBarItems,NavBarGroups(NavBarGroup列表)和NavBarItems(NavBarItem的LIst) 这些类由另外四个等效类填充,这些类将数据保存为静态成员。这些最后的课程对我来说是违规交易。它似乎跨越了过于复杂的界限。 希望有所帮助。 基思