有没有人对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; }
}
答案 0 :(得分:0)
我刚刚开始关注Caliburn Micro。但是,我做了一些关于使用带有MVVM模式的DevExpress导航栏的研究。我向开发团队询问了一个例子。他们说他们的控制中存在一个阻止它工作的错误。他们确实给出了一个解决方案的例子。链接在这里: http://www.devexpress.com/Support/Center/p/Q347737.aspx
我查看了他们的解决方案,这对我来说太复杂了。希望补丁即将推出。
基思
<强>更新强> 我没有意识到链接不起作用。以下是该解决方案的更详细说明:
为导航栏创建用户控件:
<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>
两个Target类型是两个名为* wrapper的类。他们做绑定像: BindingOperations.SetBinding(NavBarGroup,NavBarGroup.ContentProperty,new Binding(“Content”){Source = this});
请注意,这个引用了一个名为NavBarGroup的类。有四个帮助组。 NavBarGroup,NavBarItems,NavBarGroups(NavBarGroup列表)和NavBarItems(NavBarItem的LIst) 这些类由另外四个等效类填充,这些类将数据保存为静态成员。这些最后的课程对我来说是违规交易。它似乎跨越了过于复杂的界限。 希望有所帮助。 基思