AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.02.2015, 17:39   #1  
pedrozzz is offline
pedrozzz
Молодой, подающий надежды
Аватар для pedrozzz
MCBMSS
Лучший по профессии 2015
 
164 / 218 (8) ++++++
Регистрация: 18.02.2010
Адрес: Краснодар
HierarchyViewerWPF
Dynamics AX 2012 R3
На форме "Управление запасами \ Обычный \ Ячейки" для визуализации данных используется ManagedHost контрол и библиотека к нему Microsoft.Dynamics.HierarchyViewerWPF
Вопрос: можно ли как-то изменить отображение данных "амфитеатром" на какое-либо другое? У объекта
X++:
Microsoft.Dynamics.HierarchyViewerWPF.HierarchyView
есть подозрительный метод set_Template(ControlTemplate value). Кто-нибудь знает, из какого пространства имен инициализировать этот ControlTemplate? Или это вообще не то и данные отображаются только так, как есть сейчас?
__________________
Кононов Пётр
Старый 17.02.2015, 18:59   #2  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
По-моему, Template в данном случае - это свойство, унаследованное от UserControl. В пространстве имен Microsoft.Dynamics.HierarchyViewerWPF есть еще такие классы:
PHP код:
public sealed class NodeView UserControlIComponentConnector
{
    
// Fields
    
internal Image lineEndIconImage;
    
// Methods
    
public void ChangeLineEndIcon(int howmanymorebool isLeftSide);
}
public class 
NodeViewModel DependencyObjectINotifyPropertyChanged
{
    
// Properties
    
public Color BorderColor getset; }
    public 
Color BorderHColor getset; }
    public 
Color BorderIconColor getset; }
    public 
Color BorderIconHColor getset; }
    public 
Color BottomGradColor getset; }
    public 
Color BottomHColor getset; }
    public 
ObservableCollection<NodeViewModelChildren getset; }
    public 
Point ConnectorPointFromNodeToChild getset; }
    public 
Point ConnectorPointFromNodeToParent getset; }
    public 
Point ConnectorPointToChild getset; }
    public 
Point ConnectorPointToParent getset; }
    public 
FlowDirection FlowD getset; }
    public 
int HowManyChildrenOufOfView getset; }
    public 
BitmapSource IconType getset; }
    public 
bool InView getset; }
    public 
bool IsCenterNode getset; }
    public 
bool IsInRightChildGroup getset; }
    public 
double Left getset; }
    public 
string MoveToCenterToolTip getset; }
    public 
int NodeIndexOnRing getset; }
    public 
Node NodeModel getset; }
    public 
NodeViewModel Parent getset; }
    public 
int RingIndex getset; }
    public 
int RingNumber getset; }
    public 
Color TextColor getset; }
    public 
Color TextHColor getset; }
    public 
double Top getset; }
    public 
Color TopGradColor getset; }
    public 
Color TopHColor getset; }
    public 
NodeView View getset; }

Теоретически, если добраться до их экземпляров, то можно как-то поиграться цветами и иконками.
За это сообщение автора поблагодарили: pedrozzz (2).
Старый 17.02.2015, 19:30   #3  
pedrozzz is offline
pedrozzz
Молодой, подающий надежды
Аватар для pedrozzz
MCBMSS
Лучший по профессии 2015
 
164 / 218 (8) ++++++
Регистрация: 18.02.2010
Адрес: Краснодар
Цитата:
Сообщение от gl00mie Посмотреть сообщение
Теоретически, если добраться до их экземпляров, то можно как-то поиграться цветами и иконками.
У меня более глобальный вопрос, можно ли изменить отображение "амфитеатром" на отображение "в линию", например. Без ковыряния кода в библиотеке Кстати, не в курсе, он вообще доступен для ковыряния и облагораживания напильником? Или черный ящик, как он есть?
__________________
Кононов Пётр
Старый 17.02.2015, 19:56   #4  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Без ковыряния код - сложно сказать. Для обсчета расположения отдельных элементов вроде как есть интерфейс IHVLayoutEngine, ссылка на который является одним из свойств TreeViewModel. Если по-своему реализовать этот интерфейс либо доработать его штатную реализацию, класс HVLayoutEngine, то, вероятно, можно как-то поменять "амфитеатр" на что-либо другое. В целом, если вооружиться Reflector'ом, можно посмотреть на штатную реализацию и сваять что-то по аналогии.
PHP код:
public interface IHVLayoutEngine
{
    
// Methods
    
void CalculateConnectionPointsForNodes(ObservableCollection<LevelForNodeViewModelschildren);
    
Point CalculatePositionForParent(int parentRingNumberPoint previousNodePosPoint firstChildPoint lastChild);
    
Point CalculatePositionLeftSiblingParent(Point parent);
    
double GetHeightForEllipse(int ringnumber);
    
double GetRadiusInRings(int ringNumber);
    
double GetWidthForEllipse(int ringnumber);
    
Dictionary<intintHowManyNodeToFit();
    
Collection<PointLeftAlignNodes(int ringNumber);
    
void SetData(double nHeightdouble nWidthDictionary<intdoubleradiusdouble angledouble ddPoint cn_positionDictionary<intdoublewidthFEDictionary<intdoubleheightFE);
    
void SetDataForEllipses(Dictionary<intdoublewidhtFEDictionary<intdoubleheightFE);
    
void SetRadiusInRings(Dictionary<intdoubleradius);

 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 19:40.