Caliburn не очень хорошо играет с DevExpress NavBarControl - PullRequest
1 голос
/ 23 февраля 2011

Кто-нибудь имел опыт работы с Caliburn и DevExpress NavBarControl.Я пытаюсь привязать список NavBarItems к моей модели просмотра.Это не работает, и я уверен, что это из-за привязок Калиберна.

например

<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 голосов
/ 26 октября 2011

Я только начал смотреть на Caliburn Micro. Однако я провел некоторые исследования по использованию панели навигации DevExpress с шаблоном MVVM. Я попросил команду разработчиков привести пример. Они сказали, что в их контроле есть ошибка, которая мешает ему работать. Они дали пример работы вокруг. Ссылка здесь: http://www.devexpress.com/Support/Center/p/Q347737.aspx

Я посмотрел на их решение, и оно было слишком сложным для использования. Надеюсь, патч будет доступен в ближайшее время.

Keith

UPDATE Я не понял, что ссылка не работает. Вот более подробное объяснение решения:

  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>
    

Два типа Target - это два класса, называемые * wrapper. Они делают связывание как: BindingOperations.SetBinding (NavBarGroup, NavBarGroup.ContentProperty, new Binding ("Content") {Source = this});

Обратите внимание, что это ссылка на класс с именем NavBarGroup. Есть четыре группы помощников. NavBarGroup, NavBarItems, NavBarGroups (список NavBarGroup) и NavBarItems (список NavBarItem) Эти классы заполнены еще четырьмя эквивалентными классами, которые хранят данные как статические члены. Именно эти последние занятия стали для меня прерывающим делом. Кажется, переступить черту слишком сложно. Надеюсь, это поможет. Кит

...