Mini Kabibi Habibi

Current Path : C:/Users/Public/Documents/DXperience 13.1 Demos/WPF/Bin/
Upload File :
Current File : C:/Users/Public/Documents/DXperience 13.1 Demos/WPF/Bin/PivotGridDemo.exe

MZ����@���	�!�L�!This program cannot be run in DOS mode.

$PELbE�Q�8F~V `@ �@�(VS`C��T  H.text�6 8 `.rsrcC`D:@@.reloc�~@B`VH��
�r�X���	0@E+s
o*s
o*rprYps
z�(
(((
(*{*"}*{*"}*0F~(
,4((
(
(
�~(
,~ �( 
~*rop*�((
,*r�p(r�p(!
*�o"
(
,o#
o$
o%
o&
o'
*&(*J�s(,*0@-(o(
(o)
*(o*
o+
�s,
o-
*0�(o.
rEprep(
rpr�p(r�pr�p(r�pr�p(
	o/
	o0
r�pr�p(r	pr#p(r5prMp(r]prqp(	o1
r]pr{p(o1
s2
		o3
	r�po4
	o5
#�V@o6
	#�V@o6
	#�V@o6
(o%

�

�
�
�
	�
�
�
�
�
�
		�
o7
(o#
���o8
&	��r�p�o9
�r�p�	o9
�r�p�(:
o;
((o<
*0s=

o4
*&(*0F((	�s,
o>
�'&(o?
(o(
(o)
�*'�0q(o@
(o%
oA
-
(o)
*(o.
(o%
r�poB

(o%
r�poB
(o%
r?poB
(o%
rpoB

(o%
r�poB
(o#
oC
r�poD
(o#
oC
r�poD
o3
o3
oE
#�V@o6
rpoF
	#�V@o6
	rpoF
#�V@o6
oG
oG
oG
	oG
oG
(�s,
o<
*J((oH
*0nsI
�
sJ
�
��
rp�r!p�r5p�r?p�rIp�rWp�rcp�rsp�r}p�	r�p����r�p�r�p�r�p�r�p�r�p�r�p�r�p�r�p�rp�	rp�
rp�r'p����r7p�rGp�rUp�rkp�r{p�r�p�r�p�r�p�r�p�	r�p�
r�p�r�p�r�p�
rp�rp�r5p����
	rAp�	rUp�	rep�	rop�	r�p�	r�p�	r�p�	r�p�	r�p�		r�p�	
r�p�	r�p�	r	p�	
rp�	r-p�	���r?p�rQp�rcp�r{p�r�p��~�%sK
oL
~oM
~oN
*.~oO
*(
*J{3oP
o*2{4o*0Qs
}3}4~�sQ
oR
~�sS
oT
~��oU
*.~oV
*0>~oW
oX
��
sY
oZ
�&�~

o[

~
2o[
~
Pdo[
	X(&('s\
	
+!	%Xo]
sAo^

X

	2�s_
+!%Xo]
sFo`
X2�sa

+
~�sTob
X~�i2�sc
+Ho]

~

od
oe
of
~
 �oe
(g
sYoh
X2�	~
	od
oe
oi
~
od
oe
oj
(+sK/+~
o[
+C~
od
oe
ok
~
do[
(*sb&YX2�ol
~YoW
~om
-=:���on
�
,oo
�*A4'3
0*sp

+((oq
-or
os
2�*0*sp

+()oq
-or
os
2�*�r�p~~
~�ioe
�~~
~�ioe
�(t
*�r�p~~
~�ioe
�~~
~�ioe
�(t
*�o_#�?~
ou
Xl(v
(w
*�~
 � �o[
~

o[
~
o[
sx
*(
*�{5oy
,+oz
to*0D	s}5sJ

�-sK
oL
�sS
oT
o{
o|
*0Q
r�p(>(}
s~

r�ps
s�
r�
po�
&o�
�
&o�
��o|
�*'=
�'"I0m(=s�

o�
r�
p(2(�
s�
o�
o�
&r4po�
��
�#,oo
�,oo
�,oo
�&
�	*4.H
'+R
Q\
ff(?&*�r@p}rPp}~�
}}(
*^~-
s0�~*rVp*.(1{*2(1}*.(1{*2(1}*.(1{*2(1}*.(1{*2(1}*0vrvp(
-*s�

rvpo�
o�
o�
r�p(�
,;o�
o�
��;�o�
�(4�(�
(:�(6�&�*_r0K
rvp(�
s�

r�pr�p(3(9��(5(�
o�
�
,oo
��&�*+;
GG�(9,r�p(3(�
*rVp(3(5(7(�
*Vr�p(=(2(t
*0T(�
(�
(=s�

o�
o�
�&r
prD
p(�
&��(�
��
,oo
�**(#(=1F
"(�
*>(@(C*{*Rrf
p|(+&*2rp
p(+*"(�
*>(E(H*{*Rrf
p|(+&*2rp
p(+*"(�
*�(J(M(O(RoDo�
oIo�
*{*Rr~
p|(+&*{*Rr�p|(+&*2r�
p(+*{*Rr�
p|(�
&*"(�
*>(S(V*{*Rrf
p|(+&*2r�p(+*"(�
*�(X([(](\oWoh
(`*{ *Rrf
p| (+&*{!*Rr#p|!(+&*2r�
p(+*{"*"}"*"(�
*�(a(d(f(h(joPo�
o^o�
*{#*Rr�
p|#(+&*{$*RrMp|$(	+&*{%*Rr�p|%(�
&*{&*Rr�p|&(�
&*08�(�

r�
p�(�
�ls�
s�
(�
�(*�(�
-*t(�
s�
}'*ot*0 
(�
-
�zs�

(�
*0:(�
(r{'-*{'o�
u
(�
,
,o�
*F~((�
t*6~((�
*6(�
(r*0n(o,*(�
�(�
(�
t(�
o�
(�
o�
u)-*(�
o�
t)�ss�
(�
u(p**u�*�(o,+(oo�
����(�
,(oo�
*n�(�
(�
t(�
*
*
*"(p*0(
+
o�
*r#i@}-(m(�*^(;{/s�
o�
*(�*(�*2r�
p(�*0Ps�
o�
(�
-	(�
+,){0o�

(�
,(�}+(�*:(�(�*�(�{+,(�*r�
p(�(�*�},{3��s,
{,(*�{0o(
{/o(
{1o(
(�
*�{0o(
{/o(
{1o(
*�{,- {2o�
rpr�p(�
&*rprp(�
&*�-#{,,{+,(�+r�
p(�(�*0>o�
,o�
o�
(�
&+o�
t,(��
o�
(�
&�*..�0&��s,

{3o�
o�
o�
*0�o�
-rTp(�
&*s�

s�
o�
o�
o�
��s�
o�
o�
#@�@#�r@s�
s�

	o�
	o�
	r�po�
��(�
o�
	o�
	(�
(�
*0=t�
+#o�
o�
o�
(�o�
Xo�
o�
2�*0o
+V{3o%
o�
{3o"
(
,o9
+o�
(�
,o�
(
,*o�
*X
{3o%
oA
2�*zo�
o�
s�
(�
&o�
*0lu
,'o�
(�
#i@2{-o�
.*o�
(�
#�V@Y#�?Z(�
o�
o�
}-*"o�
*0${5,*}5r�ps�

(�
*&(�
*0b
YE6Z~��#8+t0}.*t1}/{/��s�
o�
*t1}0{0��s�
o�
*t2}1{1�s�
o�
*t3}2*t���s�
o�
*t}3{3��s�
o�
{3��s
o
{3��s
o
{3�}s�
o
{3�~s�
o
*t4}4*}5*6r�
p(�*F{=o
(8*b(",($(<(�
*0�
(
(�(�,(
(	
(

+(

(
{@{@o�
t�(�(}
o
{A{Ao�
t�(�(}
o
{=(7o

{=-
��s�

o
~J-��s
�J~J(
*{I*"}I*0{<{=%
o(
o(
*0{<{=%
o(
o(
*0%{?o
(
-{?r8po
*Ns�
(
(
*(�*0c{@o(
{Go(
{D{C%
o(
o(
{<o(
{=o(
{9o(
{?o(
*0�(?-*(�
(�
(>(

s
(
rDp(
{?o
(
{7lo
{7#o
(���s��s(#*0@{?o
(
&{7lo
{Arpp��(�(t
o
*(
*0J{6~�
o
(.
.{6r�p��(�
o
*r
prD
p(�
&*0${H,*}Hr�ps�

(�
*0�
YE,9FS`mz����;HU8tt9}6*t:}7*t3}8*t;}9*t3}:*t3};*t;}<*t<}=*t3}>*t;}?{?��s
o
*t2}@{@��s�
o�
*t2}A{A��s�
o�
*t=}B*t1}C{C��s�
o�
*t1}D{D��s�
o�
*t3}E*t3}F*t2}G{G��s�
o�
*}H*(
*���(�
( 
,�(�
( 
,rRps!
z�����*2(�*(
*0V�(�

r�p��(�
��s"
(�
�Wr�p��(�
��s"
(�
�X*F~W(�
��*J~W��(�
*F~X(�
��*J~X��(�
*{Z*"}Z*{[*"}[*{\*"}\*{]*"}]*{^*"}^*{_*"}_*0�(�
r�p(#
u@(�(���s$
o%
r�p(#
u@(�rp(#
uA(�r*p(#
uA(�r>p(#
uB(�rZp(#
u2(�(���s�
o�
(�*0^(�(�(�(�(�(�{Y(�o&
{Yo'
-rjp(�(�*(�*0A(�(�,(�*(�(�o(
{Y(�o&
(�*0@(�,*(�o)
2&(�o*
(�o)
o+
u�(
**�(�o)
2&(�o*
(�o)
o+
u�(
**^o*
o,
~�
o-
*0E(�o.
{Yr�p(�o/
(}
o&
(�
�
{Yo0
�*66
�{Yo1
(�(�-r�p(�(�*0�(�o�
(�

(�o/
o2
1(�o(
(�o(
(�o(
(�~�
o.
(��o3
(�(�(�(�(�-r�p+r�po4
*0W(�,*��
(��r�p�(�o5
t��rp�(�o5
t��(:
*Zr�p(�o/
(}
*j(6
o7
o8
(�
&*�(�,.os
1%o*
o9
o:
o*
o+
o;
**{`*"}`*{a*"}a*{b*"}b*{c*"}c*0�r2p(#
uD(�(���s$
o%
(�o(
rDp(#
u1(�rlp(#
u1(�r�p(#
u3(�(���s�
o�
(���s�
o�
(���s�
o<
*�(�o/
o2
1
(�o(
*(�o(
*0; s=

r�po>
o?
(�
,	(�
+,
o@
(�&*(�*(�*�{Y(�oA
oB
oC
(�(�-r�p(�(�*JsD
}Y(E
*0[!�E
�����d��r�p�r�p�r�p�r�p�r�p�r
p��e*{m*"}m*{n*"}n*{o*"}o*{p*"}p*{q*"}q*{r*"}r*{s*"}s*{t*"}t*{u*"}u*0B"�s�
o�rpo��s�o�r.po��s�o�rHpo��s�
	o�	rfpo�	�s�o�r~po��s�o�r�po��s�o�r�po��s�o�r�po��s�o�r�po��	s�			o�	rpo�	�
s�


o�
rpo�
�s�o�r8po��s�o�rPpo��
s�


o�
rhpo�
�s�o�r�po��s�o�r�po��s�o�r�po���l*(
*{v*"}v*{w*"}w*(�*(
*j~y~x~y�iYoe
�*F~l(��o�*0/#(F

~xoe
1~x2oe
el(G

*� �-~xdoe
Z+~x 'oe
ZX*B~x
oe
�*2~xoe
*r~xou
#@�@Z(H
i*J~x~l�ioe
*0h$s�
(�o�(�o�(�o�(�o�o�(�jo�(�o�(�o�(�lo�*0t%sI

oJ
r�pЯ(�
oK
&oJ
r�pМ(�
oK
&oJ
r�pЯ(�
oK
&oJ
r�p�#(�
oK
&oJ
r�p��(�
oK
&oJ
rpЯ(�
oK
&oJ
r pЯ(�
oK
&8�oL
r�p��oM
r�p(�oM
r�p(���oM
r�p(��#oM
r�p(���oM
rp(���oM
r p(���oM
oN
oO
X?X���*0�sI
�x��
r8p�r�p�r^p�r�p�rp�r�p�r5p�r�p�r�p�	r;p�
r�p�r�p�rep�
r�p�rVp�r�p�r?p�r�p�r p�r� p�rj!p��y**
*
*
*
*b%{z(P
tG}z*b%{z(Q
tG}z*Z{z,
{zoR
*:sS
(*:sS
(*sT
zsT
zsT
z
*sT
zsT
zsT
zsT
z
*
*
*(U
*�(
}�}{}|}}}~}r�!p}�*{{*{|*:}|( *{}*:}}( *{*�}{,d}~{-{~d3}~( *{~*0@}~{~/}~{~d1d}~{~d�}( *{�*:}�( *J{�t"(*0�&r�!p
+T{�o7o@,;r�!pr�!p(�
-r�!p+r�!p{�o7o#(t
(}

X{�oV
2�r�!p(�
,r"p
*6{�o�*V(
}�}�*{�*{�*"}�*V(
}�}�*2{�o*6{�o*2{�o*6{�o*2{�o#*2{�o*6{�o*2{�o*6{�o*2{�o*6{�o*0�'s4
sI
+hoX
Xr"pX
(Y
(}
(F
oe
l(G
soZ
&3o22o3o2doX~�2�*J(X
o[
t*:(X
o\
*��*(*0(s9
	��
	r?p�	r"p�	r3"p�	rG"p�	rS"p�	r_"p�	ro"p�	r{"p�	r�"p�	+oX
X�s!oZ
&X�i2�*J(X
o[
t*:(X
o\
*��*(*~((1}�(6}�*0�)s;
sI
+o
+W{�{�oV
oe
o7{�o2o@-oX
{�o2s%oZ
&	X
	~�oe
X2�X~�2�*J(X
o[
t*:(X
o\
*07-*
+%(={�o]
,
sS
(X
(V
2�*03
+$(={�3(={�3*X
(V
2�*r(^
,o_
r�"p(`
**N(a
(D(C*�(b
oc
od
�'(�
(e
,(M*(H*(G*(F*�(b
oc
od
�5(�
(e
,(E*0[�Ssf
(g
�Tsf
(g
�Usf
(g
�Vsf
(g
�Wsf
(g
*�(b
oc
od
�'(�
(e
,(N*�(b
oc
od
�'(�
(e
,(L*��Jsf
(g
�Xsf
(g
�Ysf
(g
*0S*(b
oc
(+
(h
(�
(i
sj
(k
+(�
(i
(l
-�om
(�
*0'+(b
oc
to�
on

-*(+oo
8�(p
(q
,or
(s
ot
��+
(u
	�r�"p�(b
oc
od
o_
�r�"p�ov
�r�"p�ow
�r�"p�ot
��r#p�	or
(s
��
r-#p�(x
oy
(z
:�����oo
�*/�0,(b
oc
to�
on

-*(
+o{

8�(|
o}
;�o~
:�(u
o
#��	�r3#p�(b
oc
od
o_
�r�"p�o/
�r�"p�ow
�ri#p�ot
��r-#p�(x
oy
(�
:@�����oo
�*.�0�-(b
oc
(+
(+o�
8Z(�
o�

	(I-o�
-+	(�
o�
-;�(u
	o�
���r}#p�(b
oc
od
o_
�r�#p�	o�
�r�#p�(�
�r�#p�	o�
(�
�(:
o�
(u
o�
���		r�#p�	(b
oc
od
o_
�	r�#p�		o�
�	r�#p�	��oB
�	r�#p�	o�
��oB
�	(:
o�
(�
:������oo
�*A"m�0l.(�

o�
,o�
�(�(o]
,
o�
o�
,6o�
,,o�
�(�(o]
,o�
o�
o�
�***0�/(b
oc
to�
on

-*(+8�(u
o�
o�
r�#p(b
oc
od
o_
r�#po�
ow
(�
oy
(u
o�
o)
�r-$p(b
oc
od
o_
r�#po�
ow
(�
oy
Xo�
?_���*�(b
oc
od
�'(�
(e
*0(b
oc
(+
o�
*0,(b
oc
(+
o�
,o�
om
(�
*0(b
oc
(+
o�
(�
*(
*R{�
{�
(+&*010s�

}�
s�
}�
��
s�
(�
{�
*�od
�(�
(e
,�o�
*Zod
�(�
(e
*b�+s�
(�
�*(�
*�ru$p��(�
�$(�
�^s�
s�
(�
��*�,u-r�$ps�
zt~�o�
��*�,u-r�$ps�
z~���o�
*0u
-*�_s�
o�
*0]o�

,'o�
u,o�
to"
-o�
,*o�
3o�
.o�
*o�
3o�
*(�
*0��%(�

r�$p��(�
���bs�
s�
(�
��r�$p��(�
��s"
(�
��r�$p��(�
��s"
(�
��*2t%oj*v(m(l{�(�
o'
*F~�(�
��*J~���(�
*F~�(�
��*J~���(�
*F~�(�
��*J~���(�
*0^(d,5{�(�
r%po�
tko�
{�#i@o6
*{�o�
{�#Y@o6
*0S{�o�

E	*(e*(e(g(i*(e(g(i*0${�,*}�r)%ps�

(�
*&(�
*0�
YE&3@MZ+etL}�{��ks�
o�
*t}�*t}�*t}�*t}�*t}�*}�*2(�
��*s�
z
*(�
*6(m(�*�{�(�{�(�
o'
(u(v*0=1{�o�
~�o�
{�o�
�
 ����o�
*092{��
r�%p�o�
{��r�%p�o�
*0V{�o)
/*{�{�oA
tVo�
t6{�o�
(�o�
{�(~o�
*0\{�o�
o�
{�o�
���(�
o�
{�{�o�
���(�
s�
o�
*j{�{�o�
�o�
*�{�o�
u6,({{�o�
u7,({(}*0�3s�

{�o�
o�
o�

+d
o�
tN(|o�
o�
s�
o�
o�
o�
o�
#(@o�
o�
o�
o�

o�
-��
,
oo
�
o�
+$(�
	(�
/(�

(�
(�
-���oo
�-*s�
o�
o�
+o�
o�
or
o�
-��,oo
�o�
{�o�
u69�{�o�
o�
o�

+d
o�
tNo�
o�
+/o�
		o�
oq
-o�
	o�
or
o�
-��,oo
�
o�
-��
,
oo
�*@q��1�$$�<�dq�064
+ o�
o�
o�
(�
-X
Xo�
o�
2�*05{�o�
o�
o�
-l{�{�o�

(�
{�o�
(�
o�

o�
3
{�o�
,o�
3{�o�
�++8�{�o�
o�
o�
+Vo�
{�(�
(�
o�

o�
3
{�o�
,o�
3{�o�
-++	o�
-��,oo
�{�(�
*�c��{�o�
u6-{�o�
u7,**�(~,"o�
3o�
~�
3��o�
*0${�,*}�r�%ps�

(�
*&(�
*0�
YE)d��������!.8Mt@}�{��ws�
o�
*tP}�{��xs�
o�
{��xs�
o�
*tL}�{��ys�
o�
*tP}�*tP}�*tP}�*tQ}�*tR}�*tS}�*t}�{��s�
o�
*t}�*t}�*t}�*t}�*tT}�{��zs�
o�
*}�*0r��
r�%p�r#&p�r�%p�r/&p�rA&p�rQ&p�r]&p�ri&p�r{&p�	r�&p�
r�&p�r�&p���*^~�-
(���~�*0�6s

�L(�
s�~�o�r�&po�o
�M(�
s�~�o�r�&po�o
�N(�
s�
	~�o�	r'po�	o
�O(�
s�~�o�rA'po�o
�P(�
s�~�o�rw'po�o
�Q(�
s�~�o�r�'po�o
�R(�
s�~�o�r�'po�o
�S(�
s�~�o�r�'po�o
�T(�
s�		~�o�	r�'po�	o
�U(�
s�

~�o�
r-(po�
o
�V(�
s�~�o�re(po�o
�W(�
s�~�o�r�(po�o
�X(�
s�

~�o�
r�(po�
o
�Y(�
s�~�o�r�(po�o
*0#7o�
u�
,o�
u�o
**0�8s

(�o
o
+X(

(�	o
,o�(+20s	
o�o
	o

o
	~�(e
,(
-���$oo
���s

o
o*
o
o:
o;
*e~0G9(�
(�uY,uY(�uZ,uZ(�u^,t^o
r�(po
r�(po
r�(po
o
-s
o
(�
,	(�
+o�
uY-uX,jo
-s
o
o
o
s
o
o
o
o
s
o
o
o
o 
o
o
o!
+-o
-s
o
o
o
o
o�
o"
*�-*s#
o$
o%
s&
o'
o%
o(
o)
*�-*s*
o+
o,
s&
o'
o,
o(
o-
*0U:(.
t[
uj,=uM�-uS�+,#�������?o/
+#o/
*n(�o
o�(.
tW*0L�Y(�
���Z(�
���7(�
���6(�
���P(�
��*{�*"}�*{�*"}�*(
*v(m(�{�(�
o'
*0�1{�o.
{�o�
�
 ����o�
{�o0
o1
/F{�o0
{� ���s2
o3
{�o0
{���s2
o3
{�o4
*>{�o�
*0${�,*}�r	)ps�

(�
*&(�
*0�
YE&3@MZg+rt}�{���s�
o�
*t}�*t}�*t}�*t}�*t}�*t}�*}�*�(m(�{�o.
{�(�
o'
{�o4
*>{�o�
*Jo5
o6
o7
*0<;o8
�n�no]
9 o9
o�
o�
@
o:
s;
o<
s=
r�)po>

o:
o<
�^(�
(?
o@
8�oA
�^oB
sC

	r�)p�^oB
(}
oD
	�^oB
o>
	s�o�o9
o�
o�oE
	��sF
��sG
sH
oI
	oJ
&o�
:\����u�,oo
�*{�&�o�o�o/
o�o�o�(�oF
{�o�
*0Y<{�3r�!p*
E
+r�)p*r�!p*r�)p*~�
*^o�oK
o���*0${�,*}�r�)ps�

(�
*&(�
*0�
YE,9FS`mz����
'4A8It_}�*t`}�*t`}�*t`}�*t`}�*t`}�*t`}�*t`}�*t`}�*t}�{���sL
oM
{���sN
oO
{���s�
o�
*t}�*t}�*t}�*t}�*t}�*t}�*ta}�*ta}�*ta}�*ta}�*}�*(
*{�*"}�*{�*"}�*6(m(�*F{�(�
o'
*0${�,*}�r*ps�

(�
*&(�
*0�
YE)6CP]+htS}�*t}�*t}�*t}�*t}�*t}�*t}�*t}�*}�*0$=r}*p(�

�(�
oP
(Q
*0&>
~�oR
-(�
~�oS
*{�*"}�*(�
*:(�
(�*2(�(�*.sT
��*0�(m(�{�(�
o'
{�o.
{�o�
oU
{�o�
r�*poV
{�o�
r�*poV
{�o�
r+poV
{�o�
r+poV
{�o�
r-+poV
{�o4
{���s�
oW
��s�
(�
*
*R{�{�oX
*�{�~Y
{�sZ
o[
{�~Y
{�sZ
o[
*0x?o�
{�o�

(�
�
o�
{�o�
(�
�,,-5,2o�
0	o�
1`(�o\
(�o]
*0g@o^
o_
.*o`
,o_
{�o�

(�
.#o`
-,o_
{�o�
(�
3{�oa
ob
*0UA
E&+0{�oc
*{�od
*{�oe
*{�of
*rM+psg
z0UA
E&+0{�oh
*{�oi
*{�oj
*{�ok
*rM+psg
z0${�,*}�r_+ps�

(�
*&(�
*0�
YE
@MZgt����8�t}�{���sl
om
{���sn
oo
*t}�*t}�*t}�*t}�*t}�*t}�*t}�*t}�*t}�*}�*v(m(�{�(�
o'
*6(�(�*0�{�,{�o�
o�
-*{�o�
op
{�o�
oq
{�o�
or
r�+pos
&{�o�
ot
{�,{�o�
o�
-*{�o�
op
{�o�
oq
{�o�
or
 ���os
ou
��os
&{�o�
or
 ���ov
ou
��ov
ou
	��os
&{�o�
or
 ���os
ou
��os
&{�o�
or
 ���ov
ou
��os
&{�o�
ot
*�{�o�
oU
{�o�
r�+poV
*0${�,*}�r�+ps�

(�
*&(�
*0�
YE	)6CP]jw�8�t}�{���s�
o�
*t}�*t}�*t}�*t}�*t}�*t}�*tf}�*tf}�*}�*rop*Vr�p(�r�p(!
*0F~�(
,4(�(
(
(
��~�(
,~� �( 
~�*2{o"
*Z{o"
rE,pow
**�#i@}� �}�(m(�*6(�(�*0lu
,'o�
(�
#i@2{�o�
.*o�
(�
#�V@Y#�?Z(�
o�
o�
}�*0:{o%
oA
,(�-*{o.
{o%
ry,poB

{o%
r�poB
{o%
r?poB
{o%
rpoB

{o%
r�poB
,
,
,	,-{ox
*o3
o3
oE
#�[@o6
rpoF
	#�V@o6
	rpoF
#�W@o6
oG
oG
oG
	oG
oG
{ox
*�{o%
oA
-{��s,
oy
*0s(z
,
{o'
*(�(�
,*{o.
{o%
o&
{o#
o$
{o?
{��s,
o<
*0�B{,
{o{
,*{�o�
s�}�{�r�,p(|
t�o}
s�

o�
o�
r�,po�
��s~
o�
{�#��@{�ls�
(
&*0XC(6
o7
o�
&{�-*{�o�
}�(�
,(�
�+,*(z
,*(�*0>o�
,o�
o�
(�+o�
t,(��
o�
(��*..�0&��s,

{o�
o�
o�
*0�Do�
-rTp(�*s�

s�
o�
o�
o�
o�
��s�
o�
o�
o�
#@�@#�r@s�
s�
o�
o�
r�po�
��(�
o�
o�
(
&*0TEs�

o�
r-po�
s�
o4
o�
o�
#@z@#�b@s�
(
&*0=t�
+#o�
o�
o�
(�o�
Xo�
o�
2�*0j
+Q{o%
o�
(�(
,o9
+o�
(�
,o�
(
,*o�
*X
{o%
oA
2�*(
*J{8{9(�*0DFs
}9}8{9o�
{o�
�sf
�o�
&*0�G{o�
o�
r
-po�
o�
-~�
+o�
o�
o�
(!
o4
r-p(�
&s�


s�
o�
��s
o�
o�
o�
*01Gu�
-*o�
��s
o�
r7-p(�
&*0${,*}rY-ps�

(�
*&(�
*0
YE,9Fjw8�th}�*ti}�*ti}�*tj}�*t3}*t2}{��s�
o�
*t4}*t}{��s
o
{��s
o
{��s�
o�
{��s�
o�
*}*0_(m(�{	Ў(�
(�
o�
{	o�
{
Ў(�
(�
o�
{
o�
(�*J{
(�o?
*Vr�p(�r�p(!
*0F~(
,4(�(
(
(
�~(
,~ �( 
~*rop*r{t@oA
��o�
*r{t@oA
��o�
*(
*J{:{;(�*0DHs	
};}:{;o�
{
o�
�
sf
�o�
&*0�G{o�
o�
r
-po�
o�
-~�
+o�
o�
o�
(!
o4
r-p(�
&s�


s�
o�
��s
o�
o�
o�
*01Gu�
-*o�
��s
o�
r7-p(�
&*0${,*}r�-ps�

(�
*&(�
*0[
YE,Pt��������8th}*ti}*ti}*t@}	{	��s�
o�
*t@}
{
��s�
o�
*tj}*t3}*t}
{
��s�
o�
*t}*t}*t}*t}*t}*t}*t}*}*�(m(�{%(�
o'
(�(�*0V{%o�
}{%o�
} {%o�
}!{%o�
}"{%o�
}#*6{%(y*03Io�
�#
(�
(�
(�
(��4o�
*N(�
(�
(�
Y*0J
E
+********r.prU.ps
z0tJ#H�z��=@
#������>@#�v@
/YXXlZlZXlX#�z...%AY[(�	lZ(�
i	.+(�*0{&o3
{'o3
{'oG
{'o�
o�
{(o3
{(oG
{(o�
{(o�
o�
{)o3
{)oG
{)o�
{)o�
o�
{*o3
{*oG
{*o�
o�
{-*{%{o�
{%{ o�
{%{!o�
{%o�
{%o�
*0�(�
-*(�{$o�
3${(oG
{)oG
{'oG
{$o�
3U{%{"o�
{%{#o�
{%o�
{%o�
{%ra.p(�
tko�
*0${+,*}+r.ps�

(�
*&(�
*0�
YE)Aer��8�tL}${$��s�
o�
*t2��s�
o�
*t}%{%��s�
o�
*t}&*t}'*t}(*t})*t}**}+*0)Ku�
-	(�
*o�
-(�*(�*{,*"},*{-*"}-*(�
*0)Lu�
-	(�
*o�
-(*(*{.*"}.*{/*"}/*(�
*^r�.p(�
s�
s�
*s�
z0&>
~0oR
-(
~0oS
*0*Mu�
,
o�
u4-*o�
oB
(*s�
z.sT
�0*(
*v(m({1(�
o'
*j{1o�
{1(y*0${8,*}8rM/ps�

(�
*&(�
*0�
YE'4AN[h+st2�s�
o�
*t}1*t}2*t}3*t}4*t}5*t}6*t}7*}8*�(m({A(�
o'
{A(�
o�
*n(n(�
-{Ao�
*j{A{Ao�
�o�
*0\{Ao�

{A{<oA
��o�
{Ao�
{Ao�
-r�/p(�
&*r�/p(�
&*�(�
-*{A{Ao�
o�
*0bN{@o�
o�
�p
{@o�
o�
+o�
�p`
o�
-��
,oo
�{Ao�
(*(D
�{@(�
(o�
o�
�o(
*�{@(�
o�
t)�s�
(�
to*6uo��*"(*0�O{?o*
o�
{?o*
o,
{@o�
o�
+)o�
�p
{?o*
(�qo�
&o�
-��
,oo
�,C{?o*
{Ao�
�qo�
-!{?o*
{Ao�
�qo�
&{?o*
o�
*15f
04P
E	+*****r0ps�
z0/Q
YE
.3
******0${S,*}Sr#0ps�

(�
*&(�
*0`
YE,Dh����,9FS`mz�������8�th}9*ti}:*ti};*tP�s$
o%
*t@}<{<�s�
o�
*t2}={=�s�
o�
*tr}>*t@}?{?�s$
o%
*t@}@{@�s$
o%
{@�s�
o�
*t}A*t}B*t}C*t}D*t}E*t}F*t}G*t}H*t}I*t}J*t}K*t}L*t}M*t}N*t}O*t}P*t}Q*t}R*}S*0��
3r�0p*r�0p*s�
z
*(�
*{U*"}U*0�R(m(5{Y�6
()�(�('{\М(�
o�
{Wo*
��r5p�r�0p�r1p�o:
{Wo�
{\(�
o'
{\o�
(*o�
�t���(+(,*0�Ss�

r�(po
s#
o$
o%
s�
o�
o%
o�
o%
o�
o%
s�
o�
o%
o�
o�
s�
o�
o�
s�
o�
o�
o�
o�
{do�
{do�
od
*0\T{\o�
Z�s
+4+'{\o�
ZX�sXs�
�sX2�X{\o�
2�*0�U{ZoA
,8{ZoA
oB
(
-!�t(�
{ZoA
oB
(�
+
r�!p{Zo*
o,
+Q��t(�
�t(�

{Zo*
	o�
&,�t�t�t(�
,	X�i2�(
-
{Zo;
*{Zo�
*r{]o�
{]r31po�
*03
+"~T�(�
,A(�
X(�
*X
~T�i2�Z*0�V{YoA
tVo�
t6(�
r�(po
o�
r�(po
o
-s
o
{[o�
(�
,{[o�
(�
+o�
o
-s
o
o
o
{do�
o"
*0AW{do�
o�
{[o�

(�
,{[o�
(�
+o�
*0�X{do�
tY
�t(�
{ZoA
oB
(�
�to%
o�
o%
o�
YE:(*o%
o�
o�
o%
o�
rI1po�
*o%
o�
o�
*o%
o�
o�
*0_Y{`o�
-�t
�(+*{ao�
-�t��(+*�t���(+*0G{Wo)
('{\(&.М(�
+
��(�
o�
{\o�
*0OZo�
3;o�
~�
."o�
�"{Xo�
(�
(�
,��o�
o�
:�o�
o�
{](�

(&E2�*-
o�
o�
+o�
o�
oB
rS1p(}
o�
*-4o�
{]o�
oB
/��o�
o�
oB
(�
+!o�
o�
oB
/��r
p(�
o�
*-o�
{]o�
oB
+o�
o�
oB
(-��o�
*2{\o�
*0${e,*}erg1ps�

(�
*&(�
*0�
YE6Z~��%2?LYfs8{tv}V*t@}W{W�2s�
o�
*tQ}X{X�4s$
o%
*t@}Y{Y�.s�
o�
*t@}Z{Z�0s�
o�
*tP}[{[�/s�
o�
{[�/s�
o�
*t}\{\�1s�
o�
{\�3s�
o�
*t}]*t}^*t}_*t}`*t}a*t}b*tf}c*tT}d*}e*0N��
r�+p�r31p�r�1p�r�1p�r�*p�r�*p�r+p�r	2p��T*0�[(m}j(={l(�
o'
{ko*
s	

r2po
��o

o�
&{ko*
s	
r_2po
��o

o�
&{ko�
*{j*0�{koA
tVo�
��}j{lo.
(:
E�8�{lo%
o�
oG
{lo%
o�
r�2po4
{lo%
o�
o1
{lo%
o�
rqpo4
{lo%
o�
	o1
{lo%
o�
oG
{lo%
o�
o1
8�{lo%
o�
oG
{lo%
o�
r�2po4
{lo%
o�
o1
{lo%
o�
o�
{lo%
o�
r�2po4
{lo%
o�
o1
{lo%
o�
o�
{lo%
o�
oG
{lo%
o�
o1
{lo4
{lo�
*0*\(:
E�*o�
{lo%
o�
(�
-*o�
oB
o�
(�
F/r�2po�
*o�
oB
o�
(�
E1&o�
oB
o�
(�
T/r�2po�
*o�
oB
o�
(�
S1tr3po�
*o�
{lo%
o�
(�
-*o�
�#(�
��r3po�
�#(�
Y[X
(Y
(�
o�
*0${r,*}rr3ps�

(�
*&(�
*0�
YE)MZgt�8�t@}k{k�;s�
o�
*t}l{l�<s�
o�
*t}m*t}n*t}o*t}p*t}q*}r*v(m(E{u(�
o'
*b(B{ts�
o�
*0�]Ц(�
(?

o@

+X	oA
����oB
r�
po�
-5{so*
s	
��oB
o
��o

o�
&	o�
-��	u�,oo
�{s{so*
oV
Yo�
*d{0Wo�
{y(�
,Co�
o�
35r�3po�
(�
o�
o�
3%o�
r�3p(}
o�
*0~{so)
/*{yo�
o�
{y{soA
tVo�
��o1
{yr�3p{yo�
��oB
r�
pr�!po
(�
o4
*0${z,*}zr�3ps�

(�
*&(�
*0�
YE)6Zgt�8�t@}s{s�Ds�
o�
*tP}t*t}u{u�Cs
o
*t}v*t}w*t}x*t}y*}z*v(m(M{|(�
o'
*0B{|o.
{�o�
oU
{�o�
 ���oV
{|o4
*V{|o�
(K*0�^{|o%
o
8�o

o�
3p{{o*
s	
o�
oB
o
o

o�
&{~o
(�
,-{{{{o*
{{o*
oV
Yo+
o;
o�
:u����
,oo
�{{o�
*��
�{{o)
/*{~{{oA
tVo�
to
*0${�,*}�r/4ps�

(�
*&(�
*0�
YE)MZgt��8�t@}{{{�Ls�
o�
*t}|{|�Js�
o�
*t}}*t}~*t}*t}�*t}�*t}�*}�**�(m(S(R{�(�
o'
*0�_Ш(�
(?

o@

+#	oA
��{�o*
��o�
&	o�
-��	u�,oo
���(�
(?

o@
+$oA
��{�o*
��o�
&o�
-��u�,oo
�*/Fr1�0${�,*}�r�4ps�

(�
*&(�
*0�
YE)6CP]+ht@}�*t@}�*t}�*t}�*t}�*t}�*t}�*t}�*}�*0�(m(\{�o.
{�o
{�(�
o'
{�o�
oU
{�o�
 ���oV
{�o�
 ���oV
{�o�
oU
{�o�
r�+poV
{�o�
r31poV
{�o4
(X*>{�o�
*0�`�^(�
(?

o@

+#	oA
�^{�o*
�^o�
&	o�
-��	u�,oo
�{�o%
o
+0o
o�
3o
,{�o*
o�
o�
&o�
-��,oo
�{�o�
*/Fl=�0ra{�o%
o
+Jo

o�
{�oA
oB
(�
,&{�{�o*
oK
�^o	
o�
o�
-��
,oo
�*Vg
0ba{�o%
o
+:o

o�
{�oA
oB
(�
,{�oA
�^o/
o�
-��
,oo
�*FW
Jo5
o6
o7
*0${�,*}�r5ps�

(�
*&(�
*0�
YE)MZgt�������
$1>8Ft@}�{��Ys�
o�
*t@}�{��Zs�
o�
*tP}�*tP}�*tP}�*tP}�*tP}�*tP}�*tP}�*tP}�*t}�{��[sL
oM
{��Ws�
o�
*t}�*t}�*t}�*t}�*t}�*t}�*t}�*}�*v(m(f{�(

o'
*0B{�oA
tDoj(e{�o�
{�{�o�
Yo
*f(d}�{�o(
*6{�(e*0�bs

re5p(dsno

�C(�
oP
rw5pr�5p(
r�5p(}
slo

r�5pr�5p(
r6p(}
slo

{�o�
{�o�
*0cs

{�o
*f-*jo
{�o
*0${�,*}�r6ps�

(�
*&(�
*0�
YEANfs�����8�t2�as�
o�
*t2}�{��bs�
o�
*t@}�*t2�`s�
o�
*t}�*t}�*t}�*t}�*t}�*t}�*t}�*}�*:(
}�*{�*>(i}�*F(
{�o
*>(i}�*{�*v(m(t{�(
o'
*0k(�
-*{�o.
{�o�
{�o�
o�
{�o�
oU
{�o3
{�o3
{�o3
{�o3
{�o3
{�o�

E�^�8�{�o�
{�o�
{�o*
oV
-'{�o*
{�o
o:
{�o�
(s+b{�o3
{�o3
{�o3
{�o3
+0{�o3
{�o3
{�o3
{�o3
{�o4
*(s*�{�o�
oU
{�o�
o�
{�o�
{�oA
oV
*0${�,*}�r�6ps�

(�
*&(�
*0�
YE
)6Zgt����8�tL}�{��qs�
o�
*tr}�*t@}�{��rs�
o�
*t}�*t}�*t}�*t}�*t}�*t}�*t}�*}�*v(m(|{�(�
o'
*0�d{�-*{�o3
{�o3
{�o3
{�o3
{�oG
{�oG
{�o
{�oE
{�o
{�o3
{�oG
{�o3
{�o
{�o
o
{�o�
{�o�
{�o�

E?�2�*{�o3
{�o3
*{�o3
{�o3
{�o�
*{�oG
{�o3
{�o3
{�o3
{�o�
{�o�
{�(z*{�o
{�o3
{�o3
{�o
o
&{�o
o
&{�o
o
&{�o
o
&{�oG
{�o3
{�o3
{�o�
*{�o
{�o3
{�o
{�o
{�{�%oG
oG
{�o�
*{�o3
{�o3
{�{�o
{�oE
{�o
{�o�
*01e{�{�o�

(�
-+o3
{�o�
*0�{�-*t@o)

E&Kp*{�o3
{�o3
{�o3
*{�o3
{�o3
{�o3
*{�o3
{�o3
{�o3
*{�o3
{�o3
{�o3
*0�f{�o�
(�
-*s�

(
(
o�
o�
o
s�
o�
o�
o�
o�
o�
#@�@#�r@s�
s�

	o�
	o�
	r�6po�
	o�
	(�
}�{�(�
*0${�,*}�r	7ps�

(�
*&(�
*0�
YE)6C~������!.;8CtL}�{��xs�
o�
*tr}�*tP}�*tP}�{��ys�
o�
{��ys�
o�
*tR}�*t3}�*t@}�{��zs�
o�
*t}�{��{s
o
*t}�*t}�*t}�*t}�*t}�*t}�*t}�*t}�*}�*�(m(�{�(

o'
(�*0Y{�o.
{�o�

E
+(�+(�+(�+(�{�ox
*(�*(�*0Wg(�{�o3
{�{�%
o3
o3
{�{�o
{�oE
{�
o
*0Jg(�{�{�%
o3
o3
{�{�o
{�oE
{�o
*0h(�{�o*
oV
:�{�o*
rs7po�
&{�o

+	�
{�o*
o�
&	X
	�i2�{�{�o*
o+
o;
{�o
+�{�o*
o�
&X�i2�{�{�o*
o+
o;
{�{�o*
o+
o;
{�o�
(�(�*0�{�,{�o�
{�,-{�o�
o�
{�o�
oU
{�o3
{�,9{�o�
o�
{�o�
oU
{�o3
{�o�
{�,<{�oE
{�o
{�o
{�o3
{�o�
{�,${�o
{�o
{�oE
*�{�o�
oU
{�o�
o�
{�o�
{�oA
oV
*0\{�o�
o�
{�o�
oU
{�o)
-*{�o�
oU
{�o�
{�oA
oV
*0${�,*}�r7ps�

(�
*&(�
*0
YE
)6Z~�����8�tL}�{���s�
o�
*tr}�*t@}�{���s�
o�
*t@}�{���s�
o�
*t}�*t}�*t}�*t}�*t}�*t}�*}�*0H(m(�{�(�
o'
{�o�
oU
{�o�
 ���oV
*0${�,*}�r�7ps�

(�
*&(�
*0�
YE	)6CP]j+ut}�*t}�*t}�*t}�*t}�*t}�*t}�*tf}�*tf}�*}�*v(m(�{�(�
o'
*0xi{�o.
{�o#
o 
+7o!

o"

+	o
{�o#
	o�
-��
	,	oo
�o�
-��
,oo
��{�o4
�*(,K
C_
`k:}�(�*:}�(�*0${�,*}�rU8ps�

(�
*&(�
*03
YE)MZgt��������8�t2}�{���s�
o�
*t2}�{���s�
o�
*t}�*t}�*t}�*t}�*t}�*t}�*t}�*t}�*t}�*tf}�*tf}�*tf}�*}�*�(m(�{�(�
o'
(�(�(�*{�*"}�*(�*0�j{�-*(�
{�#y@2#y@+#Y@Yo�{�#�@0#�@+$#Y@[($
#�?X#Y@Zo�{�o�(�#4{�o�
{�o�
8�{�o�
{�o�
{�#�?2+lo�{�#�?2)#@0#@+($
#�?X+	#�?o�{�o�(�{�#�?2+lo�{�#�?2)#@0#@+($
#�?X+	#�?o�{�o�*0\k{�o%

o�
-
#*#+o&
r�8po'
((
XXo�
2�o�
l[*0�l{�o�
o)
(+3{�o+
.
#�*{�o�
o)

(+{��
	��	o-
((
{����o-
((
#3
#�?*[*0�m{�o�
o�
-r�8ps.
z{�o

(+{����o-
((
#3r	9ps.
z#�������?�il(/
(0
Z*0Zn{�o+
.
#�?*{���o-
((

(�#3
#�?*(�[*�o3
o�
o�
o�
o�
oU
*0f{�-*{�o.
{�(�{�(�{�(�{�(�{�(�{�o4
*0�o{�o�

Ex*(�{�o1
*{�o.
(�{�o�
� ���� ����o�
{�o4
{�o2
{�o3
*{�o.
(�{�o�
�r�+p�r31p�o�
{�o4
{�o4
{�o5
*0${�,*}�r9ps�

(�
*&(�
*0
YE)MZgt�����8�tL}�{���s�
o�
*t}�{���s�
o6
*t}�*t}�*t}�*t}�*t}�*tM}�*tM}�*t3}�*tM}�*}�*0��M(�

r{9p�(�
#�s"
(�
��r�9p�(�
#$@�s"
(�
��r�9p�(�
#@���s�
s�
(�
�r�9pМ(�
~�
��s�
s�
(�
�*2tMo�*^(E
�M(�
(7
*F~(�
�*J~�(�
*F~�(�
�*J~��(�
*F~�(�
�*J~��(�
*F~(�
t�*6~(�
*�(�
r�9p(#
u{}(�*0P7{-*(�(
,r�9p+r�9p(�r�9p(!

{(��(�
o
**�(m(�(�{o
{(�
o'
*0ip�|(�
(?

o@
+(oA
�|{o*
�|oB
o�
&o�
-��u�
	,	oo
�{o�
*4K6{o
*6{o
*6{o8
*6{o8
*0O7{oA
oB

{�|(�
(9
�|o:
{{o;
(�o4
*0[o<
u"-*o=
{o]
,9o<
�"s>
(?
,(@
sA
o]
*(B
sA
o]
*0\q
E
+r�9p*r�9p*r:p*r:p*r5:p*0${,*}r=:ps�

(�
*&(�
*0:
YE	@{������8�tP}{��s�
o�
{��s�
o�
*tP}{��s�
o�
{��s�
o�
*t@}{��s�
o�
*t}{��sl
om
*t}*t}*t}	*t}
*t}*}**0@(m(�{(�
o'
(�{{o*
oV
Yo�
*:{o�
*0Wa{o%
o
+/o

o�
,	o�
3{o*
o�
o�
&o�
-��
,oo
�*;L
(�*(�*6(�(�*R(�{o�
*0�r{-*{o.
{o%
o
+vo

o�
{oA
oB
(�
,KoG
oE
{o
{
o�
(C
o
{o�
(�
oD
+o
o�
-��
,oo
�{o4
*%��
0�a{-*{o.
{o%
o
+<o

o�
{oA
oB
(�
-o�
.o�
-oG
o�
-��
,oo
�{o4
*%Hm
0${,*}r�:ps�

(�
*&(�
*0#
YE	)M������8�tQ}
{
��s$
o%
*t@}{��s�
o�
*tP}{��s�
o�
{��s�
o�
*t}{��s�
o�
*t}*t}*t}*t}*t}*}*�(m(�{(�
o'
{o�
*�{o�
(�(�{(�o�o.
*{'*"}'*0ksr;ps�
{o%
o
+7o
oE
o�o�
o�o9
o�oF
o�o�
-��
,oo
�*C_
0i{o/
s=

(�
r!;po�
tkoG
rK;p{o/
(}
oH
oG
o5
{o/
o;
*0H(�
{o%
oI
{oJ
{oK
o.
{o%
oL
&*0W(�
oG
{o%
oI
(�oE
o�{(�o�o.
{~�
o.
*~{oM
u�(
�o(
*�o�
,0o�
o
-#{oN
,{o�
oK
o.
*06Mu	,-u	oO
u�
,oP
,{oP
oJ
*0RMu,IuoQ
u�
,5oP
,-(�oP
oE
o�{o%
oP
oL
&*0${&,*}&rY;ps�

(�
*&(�
*0�
YE6Z~������!.8Mt@}*tA}{��sR
oS
*t2}{��s�
o�
*tD}{��s�
o<
*t}{��s�
oT
{��s�
o�
*t}*t}*t}*t}*t} *t}!*t}"*t}#*t}$*t}%{%��sU
oV
*}&*0
.*t2��s�
o�
*07Mt�
oP
,!oP
o�
3oP
o�
��+��*s�
z(
*f(
}(s�
(�*{)*"})*0(t
{(��(W
X
(�oq
-�*6(�or
*(
*6{<(�
*0&us
}<(��sX
oY
&*0c(m(�{,(�
o'
{* �6sZ
�#o-
{+ �sZ
�#o-
*�{*��s$
o%
{+��s$
o%
*(�*0wv{*o[
(�
{+o[
(�(
-+(
-#{,r�;p(!
�(\
o]
*{,(}
�(\
o]
*0A(^
j3r�!p*r�;p{.o�
-r�;p+r�;p(_
(`
(�
*0${0,*}0r�;ps�

(�
*&(�
*0z
YE)6C+Nt�}**t�}+*t},*t}-*t}.*t}/*}0*"(+&*(
*Vл(�
oP
(c
*
*
*:(�(d
*0�w(e
of
og
t>
oh
oi
oh
r_<poj
oh
rc<pok
oh
���ol
oh
om
oh
on
oh
rg<poo
(e
op
*(q
*(
*03x~1(�
, rk<p�V(�
oP
sr

�1~1*~2*�2*> 4(s
*2ot
*:ou
*0.1od
r�<p $�
��ov
t5*&ow
*(x
*]�	����lSystem.Resources.ResourceReader, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089#System.Resources.RuntimeResourceSet�PADPADP
�݀�t倢!S�σY��
���bt���u���s<�4{$�%6S��U_�8߀���a��{i��C�x���ʔk��X��߸Νg���b���ŏ�Fd���lv��̆��Q���?��Ү&2u��3��<�^���O����������N�0ŔA6Ň`��ݏ������!�С]�Х�;�/�ҝ=\�&��|"�@ג��]�[�Թۆ�S�ܝ]ޯ������g���&
��|<
��A����<��E�s���j�y�™���o���
�8jN�/0*
�
�����X�"�w%
)PE)j8)k}A)��F)��+��+�0�4��4�5�p�5М�5'�7}Ъ7#eb<ySl<hTu<�D�<<2�<�~)@<l3@�[�Ar��A�KHB�MB�ʎCO%E��F���F
y'H�=J�=AJ#�Ky�KOP�M�{�M> 5N�rCY9�QY�S-^�ٿ`J^le�f���j�k=A"k,�*k�b'n�.tok�o�U�oՄgr<��r��yL�Y{_a{ǽ|�S�|�A�|�uj��@��$QS*�S
�
�P!!B�� � x���3�4w��[����,���GU	����=~�P�+ f k	w(� �d� ��F���)�	�	z��
�
���		:	��}���	B�\���
�X�R��W��bP�

>;]k��
c}��4>
}@�Al��&fcontrols/controlstyles/azure/navigationbuttons.bamlfcontrols/controlstyles/azure/navigationbuttons.xamlsAXcontrols/controlstyles/datasourcedialog.baml��Xcontrols/controlstyles/datasourcedialog.xamlL�\controls/controlstyles/inplaceprogressbar.baml��\controls/controlstyles/inplaceprogressbar.xaml��Bcontrols/controlstyles/panel.baml�Bcontrols/controlstyles/panel.xamlJ�8controls/datasourcedialog.cs�@controls/datasourcedialog.wpf.cs�:controls/demomodulecontrol.cs$@controls/outlookdatagenerator.cs�1"controls/tasks.cs;Qdemoicon.ico�w.demotesting/fixtures.cs��generic.baml��Nhelpers/asynchronouspivotinitializer.cs�2helpers/databasehelper.cs��4helpers/fieldareahelper.cs|BBimages/headericons/calculator.png�J6images/headericons/name.png`M8images/headericons/order.png�O:images/headericons/person.png�R8images/headericons/price.png�UJimages/moonphase/firstquartermoon.png�X:images/moonphase/fullmoon.png�^Himages/moonphase/lastquartermoon.png�e8images/moonphase/newmoon.png�kNimages/moonphase/waningcrescentmoon.pngPmLimages/moonphase/waninggibbousmoon.pngUqNimages/moonphase/waxingcrescentmoon.pngyLimages/moonphase/waxinggibbousmoon.png�|,images/warningicon.pngL�,modules/asyncmode.bamlt�,modules/asyncmode.xaml��2modules/asyncmode.xaml.cs��4modules/celltemplates.baml��4modules/celltemplates.xaml�:modules/celltemplates.xaml.csB�@modules/chartgeneraloptions.baml@modules/chartgeneraloptions.xaml�Fmodules/chartgeneraloptions.xaml.cs9Jmodules/conditionalsortbysummary.bamlIpJmodules/conditionalsortbysummary.xaml'}Pmodules/conditionalsortbysummary.xaml.csŊ0modules/contextmenu.bamlɎ0modules/contextmenu.xaml��6modules/contextmenu.xaml.csg�:modules/customappearance.baml?�:modules/customappearance.xamlD�@modules/customappearance.xaml.csI	8modules/customchartdata.baml�8modules/customchartdata.xaml�/>modules/customchartdata.xaml.cs8M8modules/customerreports.bamlAq8modules/customerreports.xaml�>modules/customerreports.xaml.cs��@modules/customgroupinterval.bamlR�@modules/customgroupinterval.xaml�Fmodules/customgroupinterval.xaml.cs��2modules/customlayout.baml�2modules/customlayout.xaml,�8modules/customlayout.xaml.csh�,modules/dashboard.bamli,modules/dashboard.xaml2modules/dashboard.xaml.csf:@modules/fieldscustomization.bamlZ@modules/fieldscustomization.xaml�|Fmodules/fieldscustomization.xaml.csѹ0modules/filterpopup.baml$�0modules/filterpopup.xaml$�6modules/filterpopup.xaml.cs��4modules/groupinterval.bamlV�4modules/groupinterval.xaml�:modules/groupinterval.xaml.cs�&modules/groups.baml�&modules/groups.xamlf.,modules/groups.xaml.csZ=6modules/multipletotals.baml�A6modules/multipletotals.xamlwN<modules/multipletotals.xaml.cs|Z0modules/olapbrowser.baml�\0modules/olapbrowser.xaml�m6modules/olapbrowser.xaml.cs��(modules/olapkpi.bamlG�(modules/olapkpi.xaml"�.modules/olapkpi.xaml.cs��2modules/orderreports.baml��2modules/orderreports.xaml��8modules/orderreports.xaml.cs�,modules/prefilter.baml,modules/prefilter.xaml�2modules/prefilter.xaml.cs2)2modules/printoptions.baml�/2modules/printoptions.xaml^C8modules/printoptions.xaml.csHX6modules/printtemplates.bamlJZ6modules/printtemplates.xaml2r<modules/printtemplates.xaml.cs�6modules/productreports.bamlk�6modules/productreports.xaml�<modules/productreports.xaml.cs��4modules/serialization.baml`�4modules/serialization.xaml�:modules/serialization.xaml.cs-0modules/singletotal.bamlL0modules/singletotal.xamlW36modules/singletotal.xaml.csL4modules/sortbysummary.baml�U4modules/sortbysummary.xaml�c:modules/sortbysummary.xaml.cs�s>modules/summarydisplaymode.baml5z>modules/summarydisplaymode.xaml)�Dmodules/summarydisplaymode.xaml.csÓ,modules/topvalues.bamlc�,modules/topvalues.xamlˮ2modules/topvalues.xaml.cs�6modules/totalslocation.baml��6modules/totalslocation.xamlj�<modules/totalslocation.xaml.cs�>modules/unboundexpressions.baml��>modules/unboundexpressions.xaml.�Dmodules/unboundexpressions.xaml.cs*0	Hmodules/windowdatabasegenerator.baml�F	Hmodules/windowdatabasegenerator.xaml�T	Nmodules/windowdatabasegenerator.xaml.csf	program.csJz	4properties/assemblyinfo.csŀ	@properties/resources.designer.csE�	"themes/azure.bamlڊ	"themes/azure.xaml
�	&themes/generic.baml��	&themes/generic.xaml*�	6themes/office2007black.baml��	6themes/office2007black.xamlL�	4themes/office2007blue.baml��	4themes/office2007blue.xamlb�	8themes/office2007silver.baml��	8themes/office2007silver.xamlx�	!nAMSBAML```����\XPresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNWindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35WSPresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNSystem.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 NavigationButtonIconBrush��EndPoint��
StartPoint�Color
�Offset -)AzureNavigationButtonGlyphBrushHorizontal +'AzureNavigationButtonGlyphBrushVertical button-normal-gradient button-normal-glare '#AzureNavigationCenterButtonVertical��
TargetType��BasedOn�Property�Value��
TargetType	�	Resources Key
g�	BeginTime��
TargetName��TargetProperty
O�KeyTimeO�Value�RowDefinitions�ColumnDefinitions�Name�CornerRadiusJ�Opacity
�GradientOrigin�RelativeTransform�CenterX�CenterY
�ScaleX
�ScaleY
��AngleX
��AngleY��CenterX��CenterY�Angle�CenterX �CenterY!T�X"T�Y#��Name$��Triggers%]�
Conditions&��Property'��Value(N�EnterActions 
	Timeline1)N�ExitActions*�Name 
	Timeline2+P�Property,P�Value-��BeginStoryboardName.�
TargetName 	AzureNavigationTopButton 
AzureNavigationBottomButton AzureNavigationLeftButton "editor-button-pressed-gradient 
editor-button-pressed-glare )%AzureNavigationCenterButtonHorizontal AzureNavigationRightButton AzureFirstCellGlyph/�Stretch AzurePrevCellGlyph AzureNextCellGlyph AzureLastCellGlyph AzureFirstRowGlyph AzurePrevPageGlyph AzurePrevRowGlyph AzureMoveParentGlyph AzureNextRowGlyph AzureNextPageGlyph AzureLastRowGlyph !AzureCellNavigatorBorderStyle  AzureRowNavigatorBorderStyle�D9http://schemas.microsoft.com/winfx/2006/xaml/presentation:x,http://schemas.microsoft.com/winfx/2006/xaml%?9&	&	Z&	�&	&	�&	77&		77&	
�77&	�77&	#77&	
*77&	�0&	 1&	�1&	�1&	~2&	c3&	�3&	e4&	�5&	66&	�6&	�7&	�7��$0.5,1&�$0.5,0&�.��$	#FF0B2145��$0Q��$	#FF1B4FA3��$1Q���$0.5,1&�$0.5,0&�.��$	#FF041C43��$0Q��$	#FF1B4FA3��$1Q���$	0.972,0.5&�$	0.028,0.5&�.��$	#FF041C43��$0Q��$	#FF1B4FA3��$1Q���$0.5,1&�$0.5,0&�.��$	#FF578BC8��$0Q��$	#FFBDD7FF��$1Q��$	#FF88B1F0��$0.529Q���$
0.5,-0.002&�$	0.5,1.002&�.��$	#FFD5E1F6��$0.865Q��$	#FFE7F2FA��$1Q��$	#FFAAC4EC��$0Q���"�Z�.����$25�����$45�����$13(����
�������"�
	���
	Timeline1.��U�$
00:00:00X�$	hot��$(UIElement.Opacity)�.\���$
00:00:00.3000000��$1Q���
	Timeline2.��U�$
00:00:00X�$	hot��$(UIElement.Opacity)�.\���$
00:00:00.5000000��$0Q�.R��$
�Auto��$
�Auto���$��*���$
�0.5*���$
�0.5*�.+��$border��$
0,0,0,0��$��1�$�2�����$	1.005,0.5&�$
-0.005,0.5&�.��$	#FF578BC8��$0Q��$	#FFBDD7FF��$1Q��$	#FF88B1F0��$0.529Q��$
border1��$
�0,0,0,0q�$��2�$
0,0,0,0��$
�Stretch=�$
�Auto��$�1�����$0.01,0.5&�$0.99,0.5&�.��$	#FFD5E1F6��$0.865Q��$	#FFE7F2FA��$1Q��$	#FFAAC4EC��$0Q��$	hot��$
�0,0,0,0q�$��1�$10,10,10,10��$0Q�$�2���
�$0.993,0.502&�V�.~��$	0.5Q�$	0.5Q�$1.497Q�$0.991Q���$0Q�$0Q�$	0.5Q�$	0.5Q��$0Q�$	0.5Q�$	 0.5Q�T�$!0.238Q�$"-0.009Q�.��$	#FFD0E5FF��$0Q��$	#00FFFFFF��$1Q��$	#DADCECFF��$
0.35Q���$#contentPresenter��$�Center=�$�Center=�$
�Auto��$
�Auto��$��1�$
�0,0,0,0q�$�2�$]�%��&�@J�IsMouseOver'.��&���'.(�8��)�$*Timeline2_BeginStoryboard��8��P�+���,.)��$-Timeline2_BeginStoryboard��.��$.border�������$	1.399,0.5&�$
-0.399,0.5&�.��$	#FF385FA1��$0Q��$	#FF6086BD��$1Q��$	#FF1F4685��$0.529Q��$	#FF4168A3��$0.865Q��$
.border1�������$0,0.5&�$1,0.5&�.��$	#FF5F83B6��$0.862Q��$	#FF384E76��$1Q��$	#FF385E99��$0Q�����#cee3fdP�+�{�,..��$
.border1�������$0,0.5&�$1,0.5&�.��$	#FFD5E1F6��$0.865Q��$	#FFE7F2FA��$1Q��$	#FFB8C2D0��$0Q��$.border�������$	1.007,0.5&�$
-0.007,0.5&�.��$	#FFABB3BD��$0Q��$	#FFD7E5FB��$1Q��$	#FFA6B7D0��$0.529Q��$.contentPresenter���@J�Opacity$
0.35Q���"�Z�.����$25�����$45�����$13(����
�������"�
	���
	Timeline1.��U�$
00:00:00X�$	hot��$(UIElement.Opacity)�.\���$
00:00:00.3000000��$1Q���
	Timeline2.��U�$
00:00:00X�$	hot��$(UIElement.Opacity)�.\���$
00:00:00.5000000��$0Q�.R��$
�Auto��$
�Auto���$��*���$
�0.5*���$
�0.5*�.+��$border��$3,12,0,0��$��1�$�2�����$	1.005,0.5&�$
-0.005,0.5&�.��$	#FF578BC8��$0Q��$	#FFBDD7FF��$1Q��$	#FF88B1F0��$0.529Q��$
border1��$
�0,0,0,0q�$��2�$
3,5,0,0��$
�Stretch=�$
�Auto��$�1�����$0.01,0.5&�$0.99,0.5&�.��$	#FFD5E1F6��$0.865Q��$	#FFE7F2FA��$1Q��$	#FFAAC4EC��$0Q��$	hot��$
�0,0,0,0q�$��1�$10,10,10,10��$0Q�$�2���
�$0.993,0.502&�V�.~��$	0.5Q�$	0.5Q�$1.497Q�$0.991Q���$0Q�$0Q�$	0.5Q�$	0.5Q��$0Q�$	0.5Q�$	 0.5Q�T�$!0.238Q�$"-0.009Q�.��$	#FFD0E5FF��$0Q��$	#00FFFFFF��$1Q��$	#DADCECFF��$
0.35Q���$#contentPresenter��$�Center=�$�Center=�$
�Auto��$
�Auto��$��1�$
�0,0,0,0q�$�2�$]�%��&�@J�IsMouseOver'.��&���'.(�8��)�$*Timeline2_BeginStoryboard��8��P�+���,.)��$-Timeline2_BeginStoryboard��.��$.border�������$	1.399,0.5&�$
-0.399,0.5&�.��$	#FF385FA1��$0Q��$	#FF6086BD��$1Q��$	#FF1F4685��$0.529Q��$	#FF4168A3��$0.865Q��$
.border1�������$0,0.5&�$1,0.5&�.��$	#FF5F83B6��$0.862Q��$	#FF384E76��$1Q��$	#FF385E99��$0Q�����#cee3fdP�+�{�,..��$
.border1�������$0,0.5&�$1,0.5&�.��$	#FFD5E1F6��$0.865Q��$	#FFE7F2FA��$1Q��$	#FFB8C2D0��$0Q��$.border�������$1,0.5&�$0,0.5&�.��$	#FFABB3BD��$0Q��$	#FFD7E5FB��$1Q��$	#FFA6B7D0��$0.529Q��$.contentPresenter���@J�Opacity$
0.35Q���"�Z�.����$25�����$45�����$13(����
�������"�
	���
	Timeline1.��U�$
00:00:00X�$	hot��$(UIElement.Opacity)�.\���$
00:00:00.3000000��$1Q���
	Timeline2.��U�$
00:00:00X�$	hot��$(UIElement.Opacity)�.\���$
00:00:00.5000000��$0Q�.R��$
�Auto��$
�Auto���$��*���$
�0.5*���$
�0.5*�.+��$border��$0,0,12,3��$��1�$�2�����$	1.005,0.5&�$
-0.005,0.5&�.��$	#FF578BC8��$0Q��$	#FFBDD7FF��$1Q��$	#FF88B1F0��$0.529Q��$
border1��$
�0,0,0,0q�$��2�$
0,0,5,3��$
�Stretch=�$
�Auto��$�1�����$0.01,0.5&�$0.99,0.5&�.��$	#FFD5E1F6��$0.865Q��$	#FFE7F2FA��$1Q��$	#FFAAC4EC��$0Q��$	hot��$
�0,0,0,0q�$��1�$10,10,10,10��$0Q�$�2���
�$0.993,0.502&�V�.~��$	0.5Q�$	0.5Q�$1.497Q�$0.991Q���$0Q�$0Q�$	0.5Q�$	0.5Q��$0Q�$	0.5Q�$	 0.5Q�T�$!0.238Q�$"-0.009Q�.��$	#FFD0E5FF��$0Q��$	#00FFFFFF��$1Q��$	#DADCECFF��$
0.35Q���$#contentPresenter��$�Center=�$�Center=�$
�Auto��$
�Auto��$��1�$
�0,0,0,0q�$�2�$]�%��&�@J�IsMouseOver'.��&���'.(�8��)�$*Timeline2_BeginStoryboard��8��P�+���,.)��$-Timeline2_BeginStoryboard��.��$.border�������$	1.399,0.5&�$
-0.399,0.5&�.��$	#FF385FA1��$0Q��$	#FF6086BD��$1Q��$	#FF1F4685��$0.529Q��$	#FF4168A3��$0.865Q��$
.border1�������$0,0.5&�$1,0.5&�.��$	#FF5F83B6��$0.862Q��$	#FF384E76��$1Q��$	#FF385E99��$0Q�����#cee3fdP�+�{�,..��$
.border1�������$
-0.013,0.5&�$	1.013,0.5&�.��$	#FFD5E1F6��$0.865Q��$	#FFE7F2FA��$1Q��$	#FFB8C2D0��$0Q��$.border�������$1,0.5&�$0,0.5&�.��$	#FFABB3BD��$0Q��$	#FFD7E5FB��$1Q��$	#FFA6B7D0��$0.529Q��$.contentPresenter���@J�Opacity$
0.35Q���"�Z�.����$45�����$25�����$13(����
�������"�
	���
	Timeline1.��U�$
00:00:00X�$	hot��$(UIElement.Opacity)�.\���$
00:00:00.3000000��$1Q���
	Timeline2.��U�$
00:00:00X�$	hot��$(UIElement.Opacity)�.\���$
00:00:00.5000000��$0Q�.R��$
�Auto��$
�Auto���$	��.5*��$	��.5*�.+��$border��$3,0,0,12��$��2�#����$
border1��$
�0,0,0,1q�$��1�$
3,0,0,5��#����$	hot��$
�0,0,0,0q�$��2�$
8,8,8,8��$0Q���
�$	0.5,0.672&�V�.~��$	0.5Q�$	0.5Q�$0.991Q�$2.285Q���$0Q�$0Q�$	0.5Q�$	0.5Q��$0Q�$	0.5Q�$	 0.5Q�T�$!0.001Q�$"0.439Q�.��$	#FFD0E5FF��$0Q��$	#00FFFFFF��$1Q��$	#DADCECFF��$
0.35Q���$#contentPresenter��$�Center=�$�Center=�$
�Auto��$
�Auto��$��2�$
�0,0,0,0q�$]�%��&�@J�IsMouseOver'.��&���'.(�8��)�$*Timeline2_BeginStoryboard��8��P�+���,.)��$-Timeline2_BeginStoryboard��.��$.border��#�����$
.border1��#�
�������#cee3fdP�+�{�,..��$
.border1�������$
0.5,-0.002&�$	0.5,1.002&�.��$	#FFD5E1F6��$0.865Q��$	#FFE7F2FA��$1Q��$	#FFB8C2D0��$0Q��$.border�������$0.5,1&�$0.5,0&�.��$	#FFABB3BD��$0Q��$	#FFD7E5FB��$1Q��$	#FFA6B7D0��$0.529Q��$.contentPresenter���@J�Opacity$
0.35Q���"�Z�.����$45�����$25�����$13(����
�������"�
	���
	Timeline1.��U�$
00:00:00X�$	hot��$(UIElement.Opacity)�.\���$
00:00:00.3000000��$1Q���
	Timeline2.��U�$
00:00:00X�$	hot��$(UIElement.Opacity)�.\���$
00:00:00.5000000��$0Q�.R��$
�Auto��$
�Auto���$	��.5*��$	��.5*�.+��$border��$
0,0,0,0��$��2�#����$
border1��$
�0,0,0,1q�$��1�$
0,0,0,0��#����$	hot��$
�0,0,0,0q�$��2�$
8,8,8,8��$0Q���
�$	0.5,0.672&�V�.~��$	0.5Q�$	0.5Q�$0.991Q�$2.285Q���$0Q�$0Q�$	0.5Q�$	0.5Q��$0Q�$	0.5Q�$	 0.5Q�T�$!0.001Q�$"0.439Q�.��$	#FFD0E5FF��$0Q��$	#00FFFFFF��$1Q��$	#DADCECFF��$
0.35Q���$#contentPresenter��$�Center=�$�Center=�$
�Auto��$
�Auto��$��2�$
�0,0,0,0q�$]�%��&�@J�IsMouseOver'.��&���'.(�8��)�$*Timeline2_BeginStoryboard��8��P�+���,.)��$-Timeline2_BeginStoryboard��.��$.border��#�����$
.border1��#�
�������#cee3fdP�+�{�,..��$
.border1�������$
0.5,-0.002&�$	0.5,1.002&�.��$	#FFD5E1F6��$0.865Q��$	#FFE7F2FA��$1Q��$	#FFB8C2D0��$0Q��$.border�������$0.5,1&�$0.5,0&�.��$	#FFABB3BD��$0Q��$	#FFD7E5FB��$1Q��$	#FFA6B7D0��$0.529Q��$.contentPresenter���@J�Opacity$
0.35Q���"�Z�.����$45�����$25�����$13(����
�������"�
	���
	Timeline1.��U�$
00:00:00X�$	hot��$(UIElement.Opacity)�.\���$
00:00:00.3000000��$1Q���
	Timeline2.��U�$
00:00:00X�$	hot��$(UIElement.Opacity)�.\���$
00:00:00.5000000��$0Q�.R��$
�Auto��$
�Auto���$	��.5*��$	��.5*�.+��$border��$0,3,12,0��$��2�#����$
border1��$
�0,0,0,1q�$��1�$
0,3,5,0��#����$	hot��$
�0,0,0,0q�$��2�$
8,8,8,8��$0Q���
�$	0.5,0.672&�V�.~��$	0.5Q�$	0.5Q�$0.991Q�$2.285Q���$0Q�$0Q�$	0.5Q�$	0.5Q��$0Q�$	0.5Q�$	 0.5Q�T�$!0.001Q�$"0.439Q�.��$	#FFD0E5FF��$0Q��$	#00FFFFFF��$1Q��$	#DADCECFF��$
0.35Q���$#contentPresenter��$�Center=�$�Center=�$
�Auto��$
�Auto��$��2�$
�0,0,0,0q�$]�%��&�@J�IsMouseOver'.��&���'.(�8��)�$*Timeline2_BeginStoryboard��8��P�+���,.)��$-Timeline2_BeginStoryboard��.��$.border��#�����$
.border1��#�
�������#cee3fdP�+�{�,..��$
.border1�������$
0.5,-0.002&�$	0.5,1.002&�.��$	#FFD5E1F6��$0.865Q��$	#FFE7F2FA��$1Q��$	#FFB8C2D0��$0Q��$.border�������$0.5,1&�$0.5,0&�.��$	#FFABB3BD��$0Q��$	#FFD7E5FB��$1Q��$	#FFA6B7D0��$0.529Q��$.contentPresenter���@J�Opacity$
0.35Q�F�$
/Fill=�a����+#@7�!�+#��6"��"���!��"@@�!�+#@7�!�@�#@7�!�@�#��6"�@m#���!�@m#@@�!�@�#@7�!$�17��$�9��#���F�$
/Fill=�4����+#@7�!��"@@�!��"���!�+#��6"�+#@7�!$
�0,0,1,0q�$�8��$�9��#���F�$
/Fill=�4����*#@m#р��#@d�"р��#"�"р�*#�"р�*#@m#$�8��$�9��#���F�$
/Fill=�a����@m#��6"�@m#@7�!�@�#@@�!�@�#���!�@m#��6"��"��6"��"@7�!�+#@@�!�+#���!��"��6"$�17��$�9��$
�1,0,0,0q�#���F�$
/Fill=������ւ"��$р��!��$р�6"���#��E"���#�ւ"��$��"��9#р�s"��9#р�s"4I#��"4I#��"��9#��"@vX#р�s"@vX#р�s"��g#��"��g#��"@vX#��"��v#р�s"��v#р�s"=�#��"=�#��"��v#$�9��$�15��#���F�$
/Fill=�a����ւ"��!р��!��!р�6"�`!��E"�`!�ւ"��!�ւ"@Rd"р��!@Rd"р�6"@@�!��E"@@�!�ւ"@Rd"$�9��$�17��$
�0,0,0,0q�#���F�$
/Fill=�4����ւ"��!р��!��!р�6"�`!��E"�`!�ւ"��!$�9��$�8��$
�0,0,0,1q�#���F�$
/Fill=������%@��#�@��$@��#�@��$@vX#р��$@vX#р�%@��#�@��$"�"р�%"�"���#%"�"|1%��"|1%���"�|1%@m#�|1%�I,#��#%��9#��%��9#�@��$��9#���x$��9#�k$�I,#�k$@m#�k$���"�k$��"��x$"�"@��$"�"��$���"р�$��"�@��$��"�@��$+#р�$+#р�$@m#�'�$@m#�'�$+#�j�$+#�j�$��"�'�$��"�'�$���"р�$���"$�13��$�17��#���F�$
/Fill=�4����@��#@@�!р�[$@@�!р�$@Rd"�@�$@Rd"�@��#@@�!$�9��$�8��#���F�$
/Fill=�a����@��#@@�!р�[$@@�!р�$@Rd"�@�$@Rd"�@��#@@�!�@��#�`!р�[$�`!р�$��!�@�$��!�@��#�`!$�9��$�17��#���F�$
/Fill=�������"�߿"��v#�߿"��9#��9#р�*#��9#р��"�߿"��"@vX#р�g#@vX#р�g#��g#��"��g#��"@vX#��"��v#р�g#��v#р�g#=�#��"=�#��"��v#��"@�#р�g#@�#р�g#���#��"���#��"@�#$�9��$�15��#�����"�.����$
Auto�����$
Auto����"�.����$
Auto�����$
Auto��!-�<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

 <LinearGradientBrush x:Key="NavigationButtonIconBrush" EndPoint="0.5,1" StartPoint="0.5,0">
  <GradientStop Color="#FF0B2145" Offset="0" />
  <GradientStop Color="#FF1B4FA3" Offset="1" />
 </LinearGradientBrush>

 <LinearGradientBrush x:Key="AzureNavigationButtonGlyphBrushHorizontal" EndPoint="0.5,1" StartPoint="0.5,0">
  <GradientStop Color="#FF041C43" Offset="0" />
  <GradientStop Color="#FF1B4FA3" Offset="1" />
 </LinearGradientBrush>

 <LinearGradientBrush x:Key="AzureNavigationButtonGlyphBrushVertical" EndPoint="0.972,0.5" StartPoint="0.028,0.5">
  <GradientStop Color="#FF041C43" Offset="0" />
  <GradientStop Color="#FF1B4FA3" Offset="1" />
 </LinearGradientBrush>

    <LinearGradientBrush x:Key="button-normal-gradient" EndPoint="0.5,1" StartPoint="0.5,0">
        <GradientStop Color="#FF578BC8" Offset="0" />
        <GradientStop Color="#FFBDD7FF" Offset="1" />
        <GradientStop Color="#FF88B1F0" Offset="0.529" />
    </LinearGradientBrush>

    <LinearGradientBrush x:Key="button-normal-glare" EndPoint="0.5,-0.002" StartPoint="0.5,1.002">
        <GradientStop Color="#FFD5E1F6" Offset="0.865" />
        <GradientStop Color="#FFE7F2FA" Offset="1" />
        <GradientStop Color="#FFAAC4EC" Offset="0" />
    </LinearGradientBrush>

    <Style x:Key="AzureNavigationCenterButtonVertical" BasedOn="{x:Null}" TargetType="{x:Type ButtonBase}">
  <Setter Property="Width" Value="25" />
  <Setter Property="Height" Value="45" />
  <Setter Property="FontSize" Value="13" />
  <Setter Property="Foreground" Value="Black" />
  <Setter Property="Template">
   <Setter.Value>
    <ControlTemplate TargetType="{x:Type ButtonBase}">
     <ControlTemplate.Resources>
      <Storyboard x:Key="Timeline1">
       <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="hot" Storyboard.TargetProperty="(UIElement.Opacity)">
        <SplineDoubleKeyFrame KeyTime="00:00:00.3000000" Value="1" />
       </DoubleAnimationUsingKeyFrames>
      </Storyboard>
      <Storyboard x:Key="Timeline2">
       <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="hot" Storyboard.TargetProperty="(UIElement.Opacity)">
        <SplineDoubleKeyFrame KeyTime="00:00:00.5000000" Value="0" />
       </DoubleAnimationUsingKeyFrames>
      </Storyboard>
     </ControlTemplate.Resources>
     <Grid Width="Auto" Height="Auto">
      <Grid.RowDefinitions>
       <RowDefinition Height="*" />
      </Grid.RowDefinitions>
      <Grid.ColumnDefinitions>
       <ColumnDefinition Width="0.5*" />
       <ColumnDefinition Width="0.5*" />
      </Grid.ColumnDefinitions>
      <Border CornerRadius="0,0,0,0" Grid.RowSpan="1" x:Name="border" Grid.ColumnSpan="2">
       <Border.Background>
        <LinearGradientBrush EndPoint="1.005,0.5" StartPoint="-0.005,0.5">
         <GradientStop Color="#FF578BC8" Offset="0" />
         <GradientStop Color="#FFBDD7FF" Offset="1" />
         <GradientStop Color="#FF88B1F0" Offset="0.529" />
        </LinearGradientBrush>
       </Border.Background>
      </Border>
      <Border Margin="0,0,0,0" Grid.RowSpan="2" CornerRadius="0,0,0,0" x:Name="border1" VerticalAlignment="Stretch" Height="Auto" Grid.ColumnSpan="1">
       <Border.Background>
        <LinearGradientBrush EndPoint="0.01,0.5" StartPoint="0.99,0.5">
         <GradientStop Color="#FFD5E1F6" Offset="0.865" />
         <GradientStop Color="#FFE7F2FA" Offset="1" />
         <GradientStop Color="#FFAAC4EC" Offset="0" />
        </LinearGradientBrush>
       </Border.Background>
      </Border>
      <Border Margin="0,0,0,0" Grid.RowSpan="1" CornerRadius="10,10,10,10" Opacity="0" x:Name="hot" Grid.ColumnSpan="2">
       <Border.Background>
        <RadialGradientBrush GradientOrigin="0.993,0.502">
         <RadialGradientBrush.RelativeTransform>
          <TransformGroup>
           <ScaleTransform CenterX="0.5" CenterY="0.5" ScaleX="1.497" ScaleY="0.991" />
           <SkewTransform AngleX="0" AngleY="0" CenterX="0.5" CenterY="0.5" />
           <RotateTransform Angle="0" CenterX="0.5" CenterY="0.5" />
           <TranslateTransform X="0.238" Y="-0.009" />
          </TransformGroup>
         </RadialGradientBrush.RelativeTransform>
         <GradientStop Color="#FFD0E5FF" Offset="0" />
         <GradientStop Color="#00FFFFFF" Offset="1" />
         <GradientStop Color="#DADCECFF" Offset="0.35" />
        </RadialGradientBrush>
       </Border.Background>
      </Border>
      <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" Width="Auto" Height="Auto" Grid.RowSpan="1" Margin="0,0,0,0" x:Name="contentPresenter" Grid.ColumnSpan="2" />
     </Grid>
     <ControlTemplate.Triggers>
      <MultiTrigger>
       <MultiTrigger.Conditions>
        <Condition Property="IsMouseOver" Value="True" />
        <Condition Property="IsPressed" Value="False" />
       </MultiTrigger.Conditions>
       <MultiTrigger.EnterActions>
        <BeginStoryboard Storyboard="{StaticResource Timeline1}" />
       </MultiTrigger.EnterActions>
       <MultiTrigger.ExitActions>
        <BeginStoryboard Storyboard="{StaticResource Timeline2}" x:Name="Timeline2_BeginStoryboard" />
       </MultiTrigger.ExitActions>
      </MultiTrigger>
      <Trigger Property="IsPressed" Value="True">
       <Trigger.ExitActions>
        <RemoveStoryboard BeginStoryboardName="Timeline2_BeginStoryboard" />
       </Trigger.ExitActions>
       <Setter Property="Background" TargetName="border">
        <Setter.Value>
         <LinearGradientBrush EndPoint="1.399,0.5" StartPoint="-0.399,0.5">
          <GradientStop Color="#FF385FA1" Offset="0" />
          <GradientStop Color="#FF6086BD" Offset="1" />
          <GradientStop Color="#FF1F4685" Offset="0.529" />
          <GradientStop Color="#FF4168A3" Offset="0.865" />
         </LinearGradientBrush>
        </Setter.Value>
       </Setter>
       <Setter Property="Background" TargetName="border1">
        <Setter.Value>
         <LinearGradientBrush EndPoint="0,0.5" StartPoint="1,0.5">
          <GradientStop Color="#FF5F83B6" Offset="0.862" />
          <GradientStop Color="#FF384E76" Offset="1" />
          <GradientStop Color="#FF385E99" Offset="0" />
         </LinearGradientBrush>
        </Setter.Value>
       </Setter>
       <Setter Property="Foreground" Value="#cee3fd" />
      </Trigger>
      <Trigger Property="IsEnabled" Value="False">
       <Setter Property="Background" TargetName="border1">
        <Setter.Value>
         <LinearGradientBrush EndPoint="0,0.5" StartPoint="1,0.5">
          <GradientStop Color="#FFD5E1F6" Offset="0.865" />
          <GradientStop Color="#FFE7F2FA" Offset="1" />
          <GradientStop Color="#FFB8C2D0" Offset="0" />
         </LinearGradientBrush>
        </Setter.Value>
       </Setter>
       <Setter Property="Background" TargetName="border">
        <Setter.Value>
         <LinearGradientBrush EndPoint="1.007,0.5" StartPoint="-0.007,0.5">
          <GradientStop Color="#FFABB3BD" Offset="0" />
          <GradientStop Color="#FFD7E5FB" Offset="1" />
          <GradientStop Color="#FFA6B7D0" Offset="0.529" />
         </LinearGradientBrush>
        </Setter.Value>
       </Setter>
       <Setter Property="Opacity" TargetName="contentPresenter" Value="0.35" />
      </Trigger>
     </ControlTemplate.Triggers>
    </ControlTemplate>
   </Setter.Value>
  </Setter>
 </Style>
 <Style x:Key="AzureNavigationTopButton" BasedOn="{x:Null}" TargetType="{x:Type ButtonBase}">
  <Setter Property="Width" Value="25" />
  <Setter Property="Height" Value="45" />
  <Setter Property="FontSize" Value="13" />
  <Setter Property="Foreground" Value="Black" />
  <Setter Property="Template">
   <Setter.Value>
    <ControlTemplate TargetType="{x:Type ButtonBase}">
     <ControlTemplate.Resources>
      <Storyboard x:Key="Timeline1">
       <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="hot" Storyboard.TargetProperty="(UIElement.Opacity)">
        <SplineDoubleKeyFrame KeyTime="00:00:00.3000000" Value="1" />
       </DoubleAnimationUsingKeyFrames>
      </Storyboard>
      <Storyboard x:Key="Timeline2">
       <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="hot" Storyboard.TargetProperty="(UIElement.Opacity)">
        <SplineDoubleKeyFrame KeyTime="00:00:00.5000000" Value="0" />
       </DoubleAnimationUsingKeyFrames>
      </Storyboard>
     </ControlTemplate.Resources>
     <Grid Width="Auto" Height="Auto">
      <Grid.RowDefinitions>
       <RowDefinition Height="*" />
      </Grid.RowDefinitions>
      <Grid.ColumnDefinitions>
       <ColumnDefinition Width="0.5*" />
       <ColumnDefinition Width="0.5*" />
      </Grid.ColumnDefinitions>
      <Border CornerRadius="3,12,0,0" Grid.RowSpan="1" x:Name="border" Grid.ColumnSpan="2">
       <Border.Background>
        <LinearGradientBrush EndPoint="1.005,0.5" StartPoint="-0.005,0.5">
         <GradientStop Color="#FF578BC8" Offset="0" />
         <GradientStop Color="#FFBDD7FF" Offset="1" />
         <GradientStop Color="#FF88B1F0" Offset="0.529" />
        </LinearGradientBrush>
       </Border.Background>
      </Border>
      <Border Margin="0,0,0,0" Grid.RowSpan="2" CornerRadius="3,5,0,0" x:Name="border1" VerticalAlignment="Stretch" Height="Auto" Grid.ColumnSpan="1">
       <Border.Background>
        <LinearGradientBrush EndPoint="0.01,0.5" StartPoint="0.99,0.5">
         <GradientStop Color="#FFD5E1F6" Offset="0.865" />
         <GradientStop Color="#FFE7F2FA" Offset="1" />
         <GradientStop Color="#FFAAC4EC" Offset="0" />
        </LinearGradientBrush>
       </Border.Background>
      </Border>
      <Border Margin="0,0,0,0" Grid.RowSpan="1" CornerRadius="10,10,10,10" Opacity="0" x:Name="hot" Grid.ColumnSpan="2">
       <Border.Background>
        <RadialGradientBrush GradientOrigin="0.993,0.502">
         <RadialGradientBrush.RelativeTransform>
          <TransformGroup>
           <ScaleTransform CenterX="0.5" CenterY="0.5" ScaleX="1.497" ScaleY="0.991" />
           <SkewTransform AngleX="0" AngleY="0" CenterX="0.5" CenterY="0.5" />
           <RotateTransform Angle="0" CenterX="0.5" CenterY="0.5" />
           <TranslateTransform X="0.238" Y="-0.009" />
          </TransformGroup>
         </RadialGradientBrush.RelativeTransform>
         <GradientStop Color="#FFD0E5FF" Offset="0" />
         <GradientStop Color="#00FFFFFF" Offset="1" />
         <GradientStop Color="#DADCECFF" Offset="0.35" />
        </RadialGradientBrush>
       </Border.Background>
      </Border>
      <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" Width="Auto" Height="Auto" Grid.RowSpan="1" Margin="0,0,0,0" x:Name="contentPresenter" Grid.ColumnSpan="2" />
     </Grid>
     <ControlTemplate.Triggers>
      <MultiTrigger>
       <MultiTrigger.Conditions>
        <Condition Property="IsMouseOver" Value="True" />
        <Condition Property="IsPressed" Value="False" />
       </MultiTrigger.Conditions>
       <MultiTrigger.EnterActions>
        <BeginStoryboard Storyboard="{StaticResource Timeline1}" />
       </MultiTrigger.EnterActions>
       <MultiTrigger.ExitActions>
        <BeginStoryboard Storyboard="{StaticResource Timeline2}" x:Name="Timeline2_BeginStoryboard" />
       </MultiTrigger.ExitActions>
      </MultiTrigger>
      <Trigger Property="IsPressed" Value="True">
       <Trigger.ExitActions>
        <RemoveStoryboard BeginStoryboardName="Timeline2_BeginStoryboard" />
       </Trigger.ExitActions>
       <Setter Property="Background" TargetName="border">
        <Setter.Value>
         <LinearGradientBrush EndPoint="1.399,0.5" StartPoint="-0.399,0.5">
          <GradientStop Color="#FF385FA1" Offset="0" />
          <GradientStop Color="#FF6086BD" Offset="1" />
          <GradientStop Color="#FF1F4685" Offset="0.529" />
          <GradientStop Color="#FF4168A3" Offset="0.865" />
         </LinearGradientBrush>
        </Setter.Value>
       </Setter>
       <Setter Property="Background" TargetName="border1">
        <Setter.Value>
         <LinearGradientBrush EndPoint="0,0.5" StartPoint="1,0.5">
          <GradientStop Color="#FF5F83B6" Offset="0.862" />
          <GradientStop Color="#FF384E76" Offset="1" />
          <GradientStop Color="#FF385E99" Offset="0" />
         </LinearGradientBrush>
        </Setter.Value>
       </Setter>
       <Setter Property="Foreground" Value="#cee3fd" />
      </Trigger>
      <Trigger Property="IsEnabled" Value="False">
       <Setter Property="Background" TargetName="border1">
        <Setter.Value>
         <LinearGradientBrush EndPoint="0,0.5" StartPoint="1,0.5">
          <GradientStop Color="#FFD5E1F6" Offset="0.865" />
          <GradientStop Color="#FFE7F2FA" Offset="1" />
          <GradientStop Color="#FFB8C2D0" Offset="0" />
         </LinearGradientBrush>
        </Setter.Value>
       </Setter>
       <Setter Property="Background" TargetName="border">
        <Setter.Value>
         <LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5">
          <GradientStop Color="#FFABB3BD" Offset="0" />
          <GradientStop Color="#FFD7E5FB" Offset="1" />
          <GradientStop Color="#FFA6B7D0" Offset="0.529" />
         </LinearGradientBrush>
        </Setter.Value>
       </Setter>
       <Setter Property="Opacity" TargetName="contentPresenter" Value="0.35" />
      </Trigger>
     </ControlTemplate.Triggers>
    </ControlTemplate>
   </Setter.Value>
  </Setter>
 </Style>
 <Style x:Key="AzureNavigationBottomButton" BasedOn="{x:Null}" TargetType="{x:Type ButtonBase}">
  <Setter Property="Width" Value="25" />
  <Setter Property="Height" Value="45" />
  <Setter Property="FontSize" Value="13" />
  <Setter Property="Foreground" Value="Black" />
  <Setter Property="Template">
   <Setter.Value>
    <ControlTemplate TargetType="{x:Type ButtonBase}">
     <ControlTemplate.Resources>
      <Storyboard x:Key="Timeline1">
       <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="hot" Storyboard.TargetProperty="(UIElement.Opacity)">
        <SplineDoubleKeyFrame KeyTime="00:00:00.3000000" Value="1" />
       </DoubleAnimationUsingKeyFrames>
      </Storyboard>
      <Storyboard x:Key="Timeline2">
       <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="hot" Storyboard.TargetProperty="(UIElement.Opacity)">
        <SplineDoubleKeyFrame KeyTime="00:00:00.5000000" Value="0" />
       </DoubleAnimationUsingKeyFrames>
      </Storyboard>
     </ControlTemplate.Resources>
     <Grid Width="Auto" Height="Auto">
      <Grid.RowDefinitions>
       <RowDefinition Height="*" />
      </Grid.RowDefinitions>
      <Grid.ColumnDefinitions>
       <ColumnDefinition Width="0.5*" />
       <ColumnDefinition Width="0.5*" />
      </Grid.ColumnDefinitions>
      <Border CornerRadius="0,0,12,3" Grid.RowSpan="1" x:Name="border" Grid.ColumnSpan="2">
       <Border.Background>
        <LinearGradientBrush EndPoint="1.005,0.5" StartPoint="-0.005,0.5">
         <GradientStop Color="#FF578BC8" Offset="0" />
         <GradientStop Color="#FFBDD7FF" Offset="1" />
         <GradientStop Color="#FF88B1F0" Offset="0.529" />
        </LinearGradientBrush>
       </Border.Background>
      </Border>
      <Border Margin="0,0,0,0" Grid.RowSpan="2" CornerRadius="0,0,5,3" x:Name="border1" VerticalAlignment="Stretch" Height="Auto" Grid.ColumnSpan="1">
       <Border.Background>
        <LinearGradientBrush EndPoint="0.01,0.5" StartPoint="0.99,0.5">
         <GradientStop Color="#FFD5E1F6" Offset="0.865" />
         <GradientStop Color="#FFE7F2FA" Offset="1" />
         <GradientStop Color="#FFAAC4EC" Offset="0" />
        </LinearGradientBrush>
       </Border.Background>
      </Border>
      <Border Margin="0,0,0,0" Grid.RowSpan="1" CornerRadius="10,10,10,10" Opacity="0" x:Name="hot" Grid.ColumnSpan="2">
       <Border.Background>
        <RadialGradientBrush GradientOrigin="0.993,0.502">
         <RadialGradientBrush.RelativeTransform>
          <TransformGroup>
           <ScaleTransform CenterX="0.5" CenterY="0.5" ScaleX="1.497" ScaleY="0.991" />
           <SkewTransform AngleX="0" AngleY="0" CenterX="0.5" CenterY="0.5" />
           <RotateTransform Angle="0" CenterX="0.5" CenterY="0.5" />
           <TranslateTransform X="0.238" Y="-0.009" />
          </TransformGroup>
         </RadialGradientBrush.RelativeTransform>
         <GradientStop Color="#FFD0E5FF" Offset="0" />
         <GradientStop Color="#00FFFFFF" Offset="1" />
         <GradientStop Color="#DADCECFF" Offset="0.35" />
        </RadialGradientBrush>
       </Border.Background>
      </Border>
      <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" Width="Auto" Height="Auto" Grid.RowSpan="1" Margin="0,0,0,0" x:Name="contentPresenter" Grid.ColumnSpan="2" />
     </Grid>
     <ControlTemplate.Triggers>
      <MultiTrigger>
       <MultiTrigger.Conditions>
        <Condition Property="IsMouseOver" Value="True" />
        <Condition Property="IsPressed" Value="False" />
       </MultiTrigger.Conditions>
       <MultiTrigger.EnterActions>
        <BeginStoryboard Storyboard="{StaticResource Timeline1}" />
       </MultiTrigger.EnterActions>
       <MultiTrigger.ExitActions>
        <BeginStoryboard Storyboard="{StaticResource Timeline2}" x:Name="Timeline2_BeginStoryboard" />
       </MultiTrigger.ExitActions>
      </MultiTrigger>
      <Trigger Property="IsPressed" Value="True">
       <Trigger.ExitActions>
        <RemoveStoryboard BeginStoryboardName="Timeline2_BeginStoryboard" />
       </Trigger.ExitActions>
       <Setter Property="Background" TargetName="border">
        <Setter.Value>
         <LinearGradientBrush EndPoint="1.399,0.5" StartPoint="-0.399,0.5">
          <GradientStop Color="#FF385FA1" Offset="0" />
          <GradientStop Color="#FF6086BD" Offset="1" />
          <GradientStop Color="#FF1F4685" Offset="0.529" />
          <GradientStop Color="#FF4168A3" Offset="0.865" />
         </LinearGradientBrush>
        </Setter.Value>
       </Setter>
       <Setter Property="Background" TargetName="border1">
        <Setter.Value>
         <LinearGradientBrush EndPoint="0,0.5" StartPoint="1,0.5">
          <GradientStop Color="#FF5F83B6" Offset="0.862" />
          <GradientStop Color="#FF384E76" Offset="1" />
          <GradientStop Color="#FF385E99" Offset="0" />
         </LinearGradientBrush>
        </Setter.Value>
       </Setter>
       <Setter Property="Foreground" Value="#cee3fd" />
      </Trigger>
      <Trigger Property="IsEnabled" Value="False">
       <Setter Property="Background" TargetName="border1">
        <Setter.Value>
         <LinearGradientBrush EndPoint="-0.013,0.5" StartPoint="1.013,0.5">
          <GradientStop Color="#FFD5E1F6" Offset="0.865" />
          <GradientStop Color="#FFE7F2FA" Offset="1" />
          <GradientStop Color="#FFB8C2D0" Offset="0" />
         </LinearGradientBrush>
        </Setter.Value>
       </Setter>
       <Setter Property="Background" TargetName="border">
        <Setter.Value>
         <LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5">
          <GradientStop Color="#FFABB3BD" Offset="0" />
          <GradientStop Color="#FFD7E5FB" Offset="1" />
          <GradientStop Color="#FFA6B7D0" Offset="0.529" />
         </LinearGradientBrush>
        </Setter.Value>
       </Setter>
       <Setter Property="Opacity" TargetName="contentPresenter" Value="0.35" />
      </Trigger>
     </ControlTemplate.Triggers>
    </ControlTemplate>
   </Setter.Value>
  </Setter>
 </Style>

 <Style x:Key="AzureNavigationLeftButton" BasedOn="{x:Null}" TargetType="{x:Type ButtonBase}">
  <Setter Property="Width" Value="45" />
  <Setter Property="Height" Value="25" />
  <Setter Property="FontSize" Value="13" />
  <Setter Property="Foreground" Value="Black" />
  <Setter Property="Template">
   <Setter.Value>
    <ControlTemplate TargetType="{x:Type ButtonBase}">
     <ControlTemplate.Resources>
      <Storyboard x:Key="Timeline1">
       <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="hot" Storyboard.TargetProperty="(UIElement.Opacity)">
        <SplineDoubleKeyFrame KeyTime="00:00:00.3000000" Value="1" />
       </DoubleAnimationUsingKeyFrames>
      </Storyboard>
      <Storyboard x:Key="Timeline2">
       <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="hot" Storyboard.TargetProperty="(UIElement.Opacity)">
        <SplineDoubleKeyFrame KeyTime="00:00:00.5000000" Value="0" />
       </DoubleAnimationUsingKeyFrames>
      </Storyboard>
     </ControlTemplate.Resources>
     <Grid Width="Auto" Height="Auto">
      <Grid.RowDefinitions>
       <RowDefinition Height=".5*" />
       <RowDefinition Height=".5*" />
      </Grid.RowDefinitions>
      <Border CornerRadius="3,0,0,12" Grid.RowSpan="2" Background="{DynamicResource button-normal-gradient}" x:Name="border" />
      <Border Margin="0,0,0,1" Grid.RowSpan="1" CornerRadius="3,0,0,5" Background="{DynamicResource button-normal-glare}" x:Name="border1" />
      <Border Margin="0,0,0,0" Grid.RowSpan="2" CornerRadius="8,8,8,8" Opacity="0" x:Name="hot">
       <Border.Background>
        <RadialGradientBrush GradientOrigin="0.5,0.672">
         <RadialGradientBrush.RelativeTransform>
          <TransformGroup>
           <ScaleTransform CenterX="0.5" CenterY="0.5" ScaleX="0.991" ScaleY="2.285" />
           <SkewTransform AngleX="0" AngleY="0" CenterX="0.5" CenterY="0.5" />
           <RotateTransform Angle="0" CenterX="0.5" CenterY="0.5" />
           <TranslateTransform X="0.001" Y="0.439" />
          </TransformGroup>
         </RadialGradientBrush.RelativeTransform>
         <GradientStop Color="#FFD0E5FF" Offset="0" />
         <GradientStop Color="#00FFFFFF" Offset="1" />
         <GradientStop Color="#DADCECFF" Offset="0.35" />
        </RadialGradientBrush>
       </Border.Background>
      </Border>
      <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" Width="Auto" Height="Auto" Grid.RowSpan="2" Margin="0,0,0,0" x:Name="contentPresenter" />
     </Grid>
     <ControlTemplate.Triggers>
      <MultiTrigger>
       <MultiTrigger.Conditions>
        <Condition Property="IsMouseOver" Value="True" />
        <Condition Property="IsPressed" Value="False" />
       </MultiTrigger.Conditions>
       <MultiTrigger.EnterActions>
        <BeginStoryboard Storyboard="{StaticResource Timeline1}" />
       </MultiTrigger.EnterActions>
       <MultiTrigger.ExitActions>
        <BeginStoryboard Storyboard="{StaticResource Timeline2}" x:Name="Timeline2_BeginStoryboard" />
       </MultiTrigger.ExitActions>
      </MultiTrigger>
      <Trigger Property="IsPressed" Value="True">
       <Trigger.ExitActions>
        <RemoveStoryboard BeginStoryboardName="Timeline2_BeginStoryboard" />
       </Trigger.ExitActions>
       <Setter Property="Background" TargetName="border" Value="{DynamicResource editor-button-pressed-gradient}" />
       <Setter Property="Background" TargetName="border1" Value="{DynamicResource editor-button-pressed-glare}" />
       <Setter Property="Foreground" Value="#cee3fd" />
      </Trigger>
      <Trigger Property="IsEnabled" Value="False">
       <Setter Property="Background" TargetName="border1">
        <Setter.Value>
         <LinearGradientBrush EndPoint="0.5,-0.002" StartPoint="0.5,1.002">
          <GradientStop Color="#FFD5E1F6" Offset="0.865" />
          <GradientStop Color="#FFE7F2FA" Offset="1" />
          <GradientStop Color="#FFB8C2D0" Offset="0" />
         </LinearGradientBrush>
        </Setter.Value>
       </Setter>
       <Setter Property="Background" TargetName="border">
        <Setter.Value>
         <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
          <GradientStop Color="#FFABB3BD" Offset="0" />
          <GradientStop Color="#FFD7E5FB" Offset="1" />
          <GradientStop Color="#FFA6B7D0" Offset="0.529" />
         </LinearGradientBrush>
        </Setter.Value>
       </Setter>
       <Setter Property="Opacity" TargetName="contentPresenter" Value="0.35" />
      </Trigger>
     </ControlTemplate.Triggers>
    </ControlTemplate>
   </Setter.Value>
  </Setter>
 </Style>
 <Style x:Key="AzureNavigationCenterButtonHorizontal" BasedOn="{x:Null}" TargetType="{x:Type ButtonBase}">
  <Setter Property="Width" Value="45" />
  <Setter Property="Height" Value="25" />
  <Setter Property="FontSize" Value="13" />
  <Setter Property="Foreground" Value="Black" />
  <Setter Property="Template">
   <Setter.Value>
    <ControlTemplate TargetType="{x:Type ButtonBase}">
     <ControlTemplate.Resources>
      <Storyboard x:Key="Timeline1">
       <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="hot" Storyboard.TargetProperty="(UIElement.Opacity)">
        <SplineDoubleKeyFrame KeyTime="00:00:00.3000000" Value="1" />
       </DoubleAnimationUsingKeyFrames>
      </Storyboard>
      <Storyboard x:Key="Timeline2">
       <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="hot" Storyboard.TargetProperty="(UIElement.Opacity)">
        <SplineDoubleKeyFrame KeyTime="00:00:00.5000000" Value="0" />
       </DoubleAnimationUsingKeyFrames>
      </Storyboard>
     </ControlTemplate.Resources>
     <Grid Width="Auto" Height="Auto">
      <Grid.RowDefinitions>
       <RowDefinition Height=".5*" />
       <RowDefinition Height=".5*" />
      </Grid.RowDefinitions>
      <Border CornerRadius="0,0,0,0" Grid.RowSpan="2" Background="{DynamicResource button-normal-gradient}" x:Name="border" />
      <Border Margin="0,0,0,1" Grid.RowSpan="1" CornerRadius="0,0,0,0" Background="{DynamicResource button-normal-glare}" x:Name="border1" />
      <Border Margin="0,0,0,0" Grid.RowSpan="2" CornerRadius="8,8,8,8" Opacity="0" x:Name="hot">
       <Border.Background>
        <RadialGradientBrush GradientOrigin="0.5,0.672">
         <RadialGradientBrush.RelativeTransform>
          <TransformGroup>
           <ScaleTransform CenterX="0.5" CenterY="0.5" ScaleX="0.991" ScaleY="2.285" />
           <SkewTransform AngleX="0" AngleY="0" CenterX="0.5" CenterY="0.5" />
           <RotateTransform Angle="0" CenterX="0.5" CenterY="0.5" />
           <TranslateTransform X="0.001" Y="0.439" />
          </TransformGroup>
         </RadialGradientBrush.RelativeTransform>
         <GradientStop Color="#FFD0E5FF" Offset="0" />
         <GradientStop Color="#00FFFFFF" Offset="1" />
         <GradientStop Color="#DADCECFF" Offset="0.35" />
        </RadialGradientBrush>
       </Border.Background>
      </Border>
      <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" Width="Auto" Height="Auto" Grid.RowSpan="2" Margin="0,0,0,0" x:Name="contentPresenter" />
     </Grid>
     <ControlTemplate.Triggers>
      <MultiTrigger>
       <MultiTrigger.Conditions>
        <Condition Property="IsMouseOver" Value="True" />
        <Condition Property="IsPressed" Value="False" />
       </MultiTrigger.Conditions>
       <MultiTrigger.EnterActions>
        <BeginStoryboard Storyboard="{StaticResource Timeline1}" />
       </MultiTrigger.EnterActions>
       <MultiTrigger.ExitActions>
        <BeginStoryboard Storyboard="{StaticResource Timeline2}" x:Name="Timeline2_BeginStoryboard" />
       </MultiTrigger.ExitActions>
      </MultiTrigger>
      <Trigger Property="IsPressed" Value="True">
       <Trigger.ExitActions>
        <RemoveStoryboard BeginStoryboardName="Timeline2_BeginStoryboard" />
       </Trigger.ExitActions>
       <Setter Property="Background" TargetName="border" Value="{DynamicResource editor-button-pressed-gradient}" />
       <Setter Property="Background" TargetName="border1" Value="{DynamicResource editor-button-pressed-glare}" />
       <Setter Property="Foreground" Value="#cee3fd" />
      </Trigger>
      <Trigger Property="IsEnabled" Value="False">
       <Setter Property="Background" TargetName="border1">
        <Setter.Value>
         <LinearGradientBrush EndPoint="0.5,-0.002" StartPoint="0.5,1.002">
          <GradientStop Color="#FFD5E1F6" Offset="0.865" />
          <GradientStop Color="#FFE7F2FA" Offset="1" />
          <GradientStop Color="#FFB8C2D0" Offset="0" />
         </LinearGradientBrush>
        </Setter.Value>
       </Setter>
       <Setter Property="Background" TargetName="border">
        <Setter.Value>
         <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
          <GradientStop Color="#FFABB3BD" Offset="0" />
          <GradientStop Color="#FFD7E5FB" Offset="1" />
          <GradientStop Color="#FFA6B7D0" Offset="0.529" />
         </LinearGradientBrush>
        </Setter.Value>
       </Setter>
       <Setter Property="Opacity" TargetName="contentPresenter" Value="0.35" />
      </Trigger>
     </ControlTemplate.Triggers>
    </ControlTemplate>
   </Setter.Value>
  </Setter>
 </Style>
 <Style x:Key="AzureNavigationRightButton" BasedOn="{x:Null}" TargetType="{x:Type ButtonBase}">
  <Setter Property="Width" Value="45" />
  <Setter Property="Height" Value="25" />
  <Setter Property="FontSize" Value="13" />
  <Setter Property="Foreground" Value="Black" />
  <Setter Property="Template">
   <Setter.Value>
    <ControlTemplate TargetType="{x:Type ButtonBase}">
     <ControlTemplate.Resources>
      <Storyboard x:Key="Timeline1">
       <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="hot" Storyboard.TargetProperty="(UIElement.Opacity)">
        <SplineDoubleKeyFrame KeyTime="00:00:00.3000000" Value="1" />
       </DoubleAnimationUsingKeyFrames>
      </Storyboard>
      <Storyboard x:Key="Timeline2">
       <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="hot" Storyboard.TargetProperty="(UIElement.Opacity)">
        <SplineDoubleKeyFrame KeyTime="00:00:00.5000000" Value="0" />
       </DoubleAnimationUsingKeyFrames>
      </Storyboard>
     </ControlTemplate.Resources>
     <Grid Width="Auto" Height="Auto">
      <Grid.RowDefinitions>
       <RowDefinition Height=".5*" />
       <RowDefinition Height=".5*" />
      </Grid.RowDefinitions>
      <Border CornerRadius="0,3,12,0" Grid.RowSpan="2" Background="{DynamicResource button-normal-gradient}" x:Name="border" />
      <Border Margin="0,0,0,1" Grid.RowSpan="1" CornerRadius="0,3,5,0" Background="{DynamicResource button-normal-glare}" x:Name="border1" />
      <Border Margin="0,0,0,0" Grid.RowSpan="2" CornerRadius="8,8,8,8" Opacity="0" x:Name="hot">
       <Border.Background>
        <RadialGradientBrush GradientOrigin="0.5,0.672">
         <RadialGradientBrush.RelativeTransform>
          <TransformGroup>
           <ScaleTransform CenterX="0.5" CenterY="0.5" ScaleX="0.991" ScaleY="2.285" />
           <SkewTransform AngleX="0" AngleY="0" CenterX="0.5" CenterY="0.5" />
           <RotateTransform Angle="0" CenterX="0.5" CenterY="0.5" />
           <TranslateTransform X="0.001" Y="0.439" />
          </TransformGroup>
         </RadialGradientBrush.RelativeTransform>
         <GradientStop Color="#FFD0E5FF" Offset="0" />
         <GradientStop Color="#00FFFFFF" Offset="1" />
         <GradientStop Color="#DADCECFF" Offset="0.35" />
        </RadialGradientBrush>
       </Border.Background>
      </Border>
      <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" Width="Auto" Height="Auto" Grid.RowSpan="2" Margin="0,0,0,0" x:Name="contentPresenter" />
     </Grid>
     <ControlTemplate.Triggers>
      <MultiTrigger>
       <MultiTrigger.Conditions>
        <Condition Property="IsMouseOver" Value="True" />
        <Condition Property="IsPressed" Value="False" />
       </MultiTrigger.Conditions>
       <MultiTrigger.EnterActions>
        <BeginStoryboard Storyboard="{StaticResource Timeline1}" />
       </MultiTrigger.EnterActions>
       <MultiTrigger.ExitActions>
        <BeginStoryboard Storyboard="{StaticResource Timeline2}" x:Name="Timeline2_BeginStoryboard" />
       </MultiTrigger.ExitActions>
      </MultiTrigger>
      <Trigger Property="IsPressed" Value="True">
       <Trigger.ExitActions>
        <RemoveStoryboard BeginStoryboardName="Timeline2_BeginStoryboard" />
       </Trigger.ExitActions>
       <Setter Property="Background" TargetName="border" Value="{DynamicResource editor-button-pressed-gradient}" />
       <Setter Property="Background" TargetName="border1" Value="{DynamicResource editor-button-pressed-glare}" />
       <Setter Property="Foreground" Value="#cee3fd" />
      </Trigger>
      <Trigger Property="IsEnabled" Value="False">
       <Setter Property="Background" TargetName="border1">
        <Setter.Value>
         <LinearGradientBrush EndPoint="0.5,-0.002" StartPoint="0.5,1.002">
          <GradientStop Color="#FFD5E1F6" Offset="0.865" />
          <GradientStop Color="#FFE7F2FA" Offset="1" />
          <GradientStop Color="#FFB8C2D0" Offset="0" />
         </LinearGradientBrush>
        </Setter.Value>
       </Setter>
       <Setter Property="Background" TargetName="border">
        <Setter.Value>
         <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
          <GradientStop Color="#FFABB3BD" Offset="0" />
          <GradientStop Color="#FFD7E5FB" Offset="1" />
          <GradientStop Color="#FFA6B7D0" Offset="0.529" />
         </LinearGradientBrush>
        </Setter.Value>
       </Setter>
       <Setter Property="Opacity" TargetName="contentPresenter" Value="0.35" />
      </Trigger>
     </ControlTemplate.Triggers>
    </ControlTemplate>
   </Setter.Value>
  </Setter>
 </Style>

 <Path x:Key="AzureFirstCellGlyph" Stretch="Fill" Data="F1 M 588,565L 588,574L 580,570L 580,569L 588,565 Z M 597,565L 597,574L 589,570L 589,569L 597,565 Z " Width="17" Height="9" Fill="{DynamicResource AzureNavigationButtonGlyphBrushHorizontal}" />
 <Path x:Key="AzurePrevCellGlyph" Stretch="Fill" Data="F1 M 588,565L 580,569L 580,570L 588,574L 588,565 Z " Margin="0,0,1,0" Width="8" Height="9" Fill="{DynamicResource AzureNavigationButtonGlyphBrushHorizontal}" />
 <Path x:Key="AzureNextCellGlyph" Stretch="Fill" Data="F1 M 590,589L 598,585L 598,584L 590,580L 590,589 Z " Width="8" Height="9" Fill="{DynamicResource AzureNavigationButtonGlyphBrushHorizontal}" />
 <Path x:Key="AzureLastCellGlyph" Stretch="Fill" Data="F1 M 589,574L 589,565L 597,569L 597,570L 589,574 Z M 580,574L 580,565L 588,569L 588,570L 580,574 Z " Width="17" Height="9" Margin="1,0,0,0" Fill="{DynamicResource AzureNavigationButtonGlyphBrushHorizontal}" />
 <Path x:Key="AzureFirstRowGlyph" Stretch="Fill" Data="F1 M 579,606L 570,606L 574,598L 575,598L 579,606 Z M 571,591L 578,591L 578,592L 571,592L 571,591 Z M 571,593L 578,593L 578,594L 571,594L 571,593 Z M 571,595L 578,595L 578,596L 571,596L 571,595 Z " Width="9" Height="15" Fill="{DynamicResource AzureNavigationButtonGlyphBrushVertical}" />
 <Path x:Key="AzurePrevPageGlyph" Stretch="Fill" Data="F1 M579,568 L570,568 574,560 575,560 579,568 z M579,577 L570,577 574,569 575,569 579,577 z" Width="9" Height="17" Margin="0,0,0,0" Fill="{DynamicResource AzureNavigationButtonGlyphBrushVertical}" />
 <Path x:Key="AzurePrevRowGlyph" Stretch="Fill" Data="F1 M579,568 L570,568 574,560 575,560 579,568 z" Width="9" Height="8" Margin="0,0,0,1" Fill="{DynamicResource AzureNavigationButtonGlyphBrushVertical}" />
 <Path x:Key="AzureMoveParentGlyph" Stretch="Fill" Data="F1 M 622,601L 613,601L 617,593L 618,593L 622,601 Z M 613,584L 622,584C 623.105,584 624,584.895 624,586L 624,589C 624,590.105 623.105,591 622,591L 613,591C 611.895,591 611,590.105 611,589L 611,586C 611,584.895 611.895,584 613,584 Z M 614,586L 614,587L 613,587L 613,588L 614,588L 614,589L 615,589L 615,588L 616,588L 616,587L 615,587L 615,586L 614,586 Z " Width="13" Height="17" Fill="{DynamicResource AzureNavigationButtonGlyphBrushVertical}" />
 <Path x:Key="AzureNextRowGlyph" Stretch="Fill" Data="F1 M601,569 L610,569 606,577 605,577 601,569 z" Width="9" Height="8" Fill="{DynamicResource AzureNavigationButtonGlyphBrushVertical}" />
 <Path x:Key="AzureNextPageGlyph" Stretch="Fill" Data="F1 M601,569 L610,569 606,577 605,577 601,569 z M601,560 L610,560 606,568 605,568 601,560 z" Width="9" Height="17" Fill="{DynamicResource AzureNavigationButtonGlyphBrushVertical}" />
 <Path x:Key="AzureLastRowGlyph" Stretch="Fill" Data="F1 M 586,583L 595,583L 591,591L 590,591L 586,583 Z M 587,593L 594,593L 594,594L 587,594L 587,593 Z M 587,595L 594,595L 594,596L 587,596L 587,595 Z M 587,597L 594,597L 594,598L 587,598L 587,597 Z " Width="9" Height="15" Fill="{DynamicResource AzureNavigationButtonGlyphBrushVertical}" />

 <Style x:Key="AzureCellNavigatorBorderStyle" TargetType="{x:Type Border}">
  <Setter Property="Width" Value="Auto" />
  <Setter Property="Height" Value="Auto" />
 </Style>

 <Style x:Key="AzureRowNavigatorBorderStyle" TargetType="{x:Type Border}">
  <Setter Property="Width" Value="Auto" />
  <Setter Property="Height" Value="Auto" />
 </Style>

</ResourceDictionary>!�
MSBAML```����OKmscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0891&clr-namespace:System;assembly=mscorlibSystemIEPivotGridDemo, Version=13.1.4.0, Culture=neutral, PublicKeyToken=nullA%clr-namespace:PivotGridDemo.PivotGridPivotGridDemo.PivotGrid\XPresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNWindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35WSPresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNSystem.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089a]DevExpress.Xpf.Core.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a?9DevExpress.Xpf.Core.BooleanToVisibilityConverterExtension  booleanToVisibilityConverter.(PivotGridDemo.PivotGrid.DataSourceDialog��
TargetType DataSourceDialogStyle�Property�Value�RowDefinitions�ColumnDefinitionsd�	IsChecked'!DevExpress.Xpf.Editors.ButtonEditNameIsTextEditableAllowDefaultButton)#DevExpress.Xpf.Editors.ComboBoxEdit	Name-'DevExpress.Xpf.Core.ColumnWaitIndicator
�	Converter�RelativeSource�D9http://schemas.microsoft.com/winfx/2006/xaml/presentation:x,http://schemas.microsoft.com/winfx/2006/xaml?dxe5http://schemas.devexpress.com/winfx/2008/xaml/editors;dx2http://schemas.devexpress.com/winfx/2008/xaml/core.sys&clr-namespace:System;assembly=mscorlib/local%clr-namespace:PivotGridDemo.PivotGrid%F&	&	77��".������.R��$�	14,10,4,4q��$
��Auto��$��28��$��28��$��28��$��*���$�62���$�*���$�20�.+��$�1���$�*���$�*���$�*�.+�	�$�AnalysisServerRadio��$�Analysis server��$�0�$��0�$
TrueY�	�$�	CubeRadio��$�	Cube File��$�1�$��0���$�TextCubeFile��$��Server��$
�0,7,0,0q�$��1���$��Database��$��2�$
�0,6,0,0q���$
��Cube��$��3�$
�0,6,0,0q��$
�0,4,0,4q�$�1�$��1���$�*���$�80�.+�$CubeEdit��..$��1��$
�Connect��$
�Connect��$�1�$
�4,0,0,0q�$��1�$	
CatalogsCombo��$�1�$��2�$
�0,4,0,4q�.$	
CubesCombo��$�1�$��3�$
�0,4,0,4q�.$�2�$��2�$�16��$�16��$
�4,0,0,0q�$�0q�y��*IsCatalogsRetriving+8
��*TemplatedParent+$�2�$��3�$�16��$�16��$
�4,0,0,0q�$�0q�y��*IsCubesRetriving+8
��*TemplatedParent+!J<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
    xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
    xmlns:sys="clr-namespace:System;assembly=mscorlib"
    xmlns:local="clr-namespace:PivotGridDemo.PivotGrid"
    >

    <dx:BooleanToVisibilityConverter x:Key="booleanToVisibilityConverter" />

    <Style TargetType="{x:Type local:DataSourceDialog}" x:Key="DataSourceDialogStyle" >
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate>
                     <Grid Margin="14,10,4,4">
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="28" />
                            <RowDefinition Height="28" />
                            <RowDefinition Height="28" />
                            <RowDefinition Height="*" />
                        </Grid.RowDefinitions>

                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="62" />
                            <ColumnDefinition Width="*" />
                            <ColumnDefinition Width="20" />
                        </Grid.ColumnDefinitions>
                        <Grid Grid.Column="1" >
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*" />
                                <ColumnDefinition Width="*" />
                                <ColumnDefinition Width="*" />
                            </Grid.ColumnDefinitions>

                            <RadioButton Content="Analysis server" Grid.Column="0" Grid.Row="0" IsChecked="True" Name="AnalysisServerRadio" />
                            <RadioButton Content="Cube File" Grid.Column="1" Grid.Row="0" Name="CubeRadio" />
                        </Grid>

                        <TextBlock Text="Server" Margin="0,7,0,0" Grid.Row="1" Name="TextCubeFile"/>
                        <TextBlock Text="Database" Grid.Row="2" Margin="0,6,0,0" />
                        <TextBlock Text="Cube" Grid.Row="3" Margin="0,6,0,0" />

                        <Grid Margin="0,4,0,4" Grid.Column="1" Grid.Row="1">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*" />
                                <ColumnDefinition Width="80" />
                            </Grid.ColumnDefinitions>
                            <dxe:ButtonEdit x:Name="CubeEdit" IsTextEditable="True" AllowDefaultButton="False" Grid.Row="1"></dxe:ButtonEdit>
                            <Button Name="Connect" Content="Connect" Grid.Column="1" Margin="4,0,0,0" Grid.Row="1" />
                        </Grid>
                        <dxe:ComboBoxEdit x:Name="CatalogsCombo" Grid.Column="1" Grid.Row="2" Margin="0,4,0,4" IsTextEditable="False" />
                        <dxe:ComboBoxEdit x:Name="CubesCombo" Grid.Column="1"  Grid.Row="3" Margin="0,4,0,4" IsTextEditable="False" />

                        <dx:ColumnWaitIndicator Grid.Column="2" Grid.Row="2" Width="16" Height="16" Margin="4,0,0,0" Padding="0" Visibility="{Binding IsCatalogsRetriving, Converter={StaticResource booleanToVisibilityConverter}, RelativeSource={RelativeSource TemplatedParent}}" />
                        <dx:ColumnWaitIndicator Grid.Column="2" Grid.Row="3" Width="16" Height="16" Margin="4,0,0,0" Padding="0" Visibility="{Binding IsCubesRetriving, Converter={StaticResource booleanToVisibilityConverter}, RelativeSource={RelativeSource TemplatedParent}}" />
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</ResourceDictionary>!MSBAML```����IEPivotGridDemo, Version=13.1.4.0, Culture=neutral, PublicKeyToken=nullA%clr-namespace:PivotGridDemo.PivotGridPivotGridDemo.PivotGrid\XPresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNWindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35WSPresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNSystem.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089a]DevExpress.Xpf.Core.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a InplaceProgressBarTemplate��
TargetTypeJ�Opacity�D9http://schemas.microsoft.com/winfx/2006/xaml/presentation:x,http://schemas.microsoft.com/winfx/2006/xaml;dx2http://schemas.devexpress.com/winfx/2008/xaml/core/local%clr-namespace:PivotGridDemo.PivotGrid%x&	��"�.R��.+��$�
PART_Track��._��$�PART_Indicator��$
�Left=����	#FFBA4F8C$	0.5Q�!_<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
    xmlns:local="clr-namespace:PivotGridDemo.PivotGrid">
 <ControlTemplate x:Key="InplaceProgressBarTemplate" TargetType="{x:Type ProgressBar}">
  <Grid>
            <Border Name="PART_Track">
                <Border Name="PART_Indicator" HorizontalAlignment="Left" Background="#FFBA4F8C" Opacity="0.5" />
            </Border>
        </Grid>
 </ControlTemplate>
</ResourceDictionary>!&MSBAML```����IEPivotGridDemo, Version=13.1.4.0, Culture=neutral, PublicKeyToken=nullA%clr-namespace:PivotGridDemo.PivotGridPivotGridDemo.PivotGrid\XPresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNWindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35WSPresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNSystem.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089��
TargetType AzureDemoPanelTemplate�Name�Name�CornerRadiusJ�Opacity�Padding��EndPoint��
StartPoint�SpreadMethod	�Color
�Offset DemoPanelStyle��
TargetType�Property
�Value�D9http://schemas.microsoft.com/winfx/2006/xaml/presentation:x,http://schemas.microsoft.com/winfx/2006/xaml/local%clr-namespace:PivotGridDemo.PivotGrid%W&	&	"��"��.R��$floating_panel��.+��$
border1�����	#FF021743$
5,5,5,5��$1Q�$
1,1,1,1q�$��0q�._��$
border3��$
�Auto��$
�Auto��$
4,4,4,4��$
1,1,1,1q�����$	0.5,0.992&�$	0.5,0.003&�$	Pad=�.��$		#FFE4F0FF��$
0Q��$		#FF88A6CC��$
1Q��$		#FFADD0FB��$
0.058Q�._��$content_container1��$
3,3,3,3��$
�Auto��$
�Auto��$12,12,12,12q�����$	0.5,0.992&�$	0.5,0.003&�$	Pad=�.��$		#FFB0D3FF��$
0Q��$		#FF88A6CC��$
1Q�._�����"��.����#
�!4<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 xmlns:local="clr-namespace:PivotGridDemo.PivotGrid">

 <ControlTemplate TargetType="{x:Type ContentControl}" x:Key="AzureDemoPanelTemplate">
  <Grid x:Name="floating_panel">
   <Border Background="#FF021743" CornerRadius="5,5,5,5" Opacity="1" x:Name="border1" Padding="1,1,1,1" BorderThickness="0">
    <Border Width="Auto" Height="Auto" CornerRadius="4,4,4,4" Padding="1,1,1,1" x:Name="border3">
     <Border.Background>
      <LinearGradientBrush EndPoint="0.5,0.992" StartPoint="0.5,0.003" SpreadMethod="Pad">
       <GradientStop Color="#FFE4F0FF" Offset="0" />
       <GradientStop Color="#FF88A6CC" Offset="1" />
       <GradientStop Color="#FFADD0FB" Offset="0.058" />
      </LinearGradientBrush>
     </Border.Background>
     <Border CornerRadius="3,3,3,3" Width="Auto" Height="Auto" x:Name="content_container1" Padding="12,12,12,12">
      <Border.Background>
       <LinearGradientBrush EndPoint="0.5,0.992" StartPoint="0.5,0.003" SpreadMethod="Pad">
        <GradientStop Color="#FFB0D3FF" Offset="0" />
        <GradientStop Color="#FF88A6CC" Offset="1" />
       </LinearGradientBrush>
      </Border.Background>
      <ContentPresenter />
     </Border>
    </Border>
   </Border>
  </Grid>
 </ControlTemplate>
 <Style x:Key="DemoPanelStyle" TargetType="{x:Type ContentControl}">
  <Setter Property="Template" Value="{DynamicResource AzureDemoPanelTemplate}" />
 </Style>

</ResourceDictionary>!8using System;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
using XmlaMetaGetter = DevExpress.XtraPivotGrid.Data.OLAPMetaGetter;
using DevExpress.Xpf.Editors;
using DevExpress.XtraPivotGrid;
using DevExpress.Xpf.Core;

namespace PivotGridDemo.PivotGrid {

    public partial class DataSourceDialog : Control {
        const string ConnectionStringName = "ConnectionString",
            CatalogsComboName = "CatalogsCombo",
            CubesComboName = "CubesCombo",
            UserName= "UserCombo",
            PasswordName = "PasswordCombo",
            ConnectButtonName = "Connect";

        public static readonly DependencyProperty IsCatalogsRetrivingProperty;
        public static readonly DependencyProperty IsCubesRetrivingProperty;
        XmlaMetaGetter metaGetter = new XmlaMetaGetter();

        static DataSourceDialog() {
            Type ownerType = typeof(DataSourceDialog);
            IsCatalogsRetrivingProperty = DependencyProperty.Register("IsCatalogsRetriving", typeof(bool), ownerType, new PropertyMetadata(false));
            IsCubesRetrivingProperty = DependencyProperty.Register("IsCubesRetriving", typeof(bool), ownerType, new PropertyMetadata(false));
        }

        public bool IsCatalogsRetriving {
            get { return (bool)GetValue(IsCatalogsRetrivingProperty); }
            set { SetValue(IsCatalogsRetrivingProperty, value); }
        }

        public bool IsCubesRetriving {
            get { return (bool)GetValue(IsCubesRetrivingProperty); }
            set { SetValue(IsCubesRetrivingProperty, value); }
        }

        ComboBoxEdit CatalogsCombo { get; set; }
        ComboBoxEdit CubesCombo { get; set; }
        TextEdit ConnectionString { get; set; }
        TextEdit User { get; set; }
        PasswordBoxEdit Password { get; set; }
        Button ConnectButton { get; set; }

        public override void OnApplyTemplate() {
            base.OnApplyTemplate();
            CatalogsCombo = GetTemplateChild(CatalogsComboName) as ComboBoxEdit;
            CatalogsCombo.EditValueChanged += OnCatalogsComboEditValueChanged;
            CubesCombo = GetTemplateChild(CubesComboName) as ComboBoxEdit;
            ConnectionString = GetTemplateChild(ConnectionStringName) as TextEdit;
            User = GetTemplateChild(UserName) as TextEdit;
            Password = GetTemplateChild(PasswordName) as PasswordBoxEdit;
            ConnectButton = GetTemplateChild(ConnectButtonName) as Button;
            ConnectButton.Click += Connect;
            ApplyPlatformTemplate();
        }

        void Connect(object sender, RoutedEventArgs e) {
            ClearCombo(CatalogsCombo);
            ClearCombo(CubesCombo);
            IsCatalogsRetriving = true;
            IsCubesRetriving = false;
            metaGetter.ConnectionString = GetConnectionStringCore();
            if(!metaGetter.Connected) {
                ShowMessage("Invalid cube.");
                IsCatalogsRetriving = false;
                return;
            }
            RetriveCatalogsAndCubes();
        }

        void OnCatalogsComboEditValueChanged(object sender, EditValueChangedEventArgs e) {
            IsCatalogsRetriving = false;
            if(IsCatalogEmpty()) {
                IsCubesRetriving = false;
                return;
            }
            IsCubesRetriving = true;
            CubesCombo.Clear();
            metaGetter.ConnectionString = GetConnectionStringCore();
            RetriveCubes();
        }

        bool CatalogOrCubeEmpty() {
            if(IsCatalogEmpty())
                return true;
            return CubesCombo.SelectedIndex < 0 || string.IsNullOrEmpty(CubesCombo.Items[CubesCombo.SelectedIndex] as string);
        }
        bool IsCatalogEmpty() {
            return CatalogsCombo.SelectedIndex < 0 || string.IsNullOrEmpty(CatalogsCombo.Items[CatalogsCombo.SelectedIndex] as string);
        }
        void ClearCombo(ComboBoxEdit edit) {
            edit.Items.Clear();
            edit.EditValue = string.Empty;
        }
    }
}!<using System;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
using DevExpress.Xpf.Editors;
using DevExpress.XtraPivotGrid;
using DevExpress.Xpf.Core;

namespace PivotGridDemo.PivotGrid {

    public partial class DataSourceDialog : Control {
        const string CubeEditName = "CubeEdit",
        ServerRadioName = "AnalysisServerRadio",
        TextCubeFileName = "TextCubeFile",
        CubeRadioName = "CubeRadio";

        bool OpenCubeFile(string fileName) {
            try {
                CubeEdit.Text = fileName;
                metaGetter.ConnectionString = "Provider=msolap;Data Source=" + CubeEdit.Text;
                RetriveCatalogsAndCubes();
                return true;
            } finally {
                metaGetter.Connected = false;
            }
        }

        void RetriveCatalogsAndCubes() {
            if(!InitComboBox(metaGetter.GetCatalogs(), CatalogsCombo)) {
                ShowMessage("There is no catalogs in the cube file.");
            }
            IsCatalogsRetriving = false;
        }

        void UpdateControls() {
            bool isServer = AnalysisServerRadio.IsChecked.Value;
            if(CubeEdit.Text.Length > 0)
                ConnectButton.IsEnabled = true;
            CatalogsCombo.IsEnabled = isServer;
            CubesCombo.IsEnabled = isServer;
            CubeEdit.Text = string.Empty;
            CubeEdit.AllowDefaultButton = !isServer;
            ClearCombo(CatalogsCombo);
            ClearCombo(CubesCombo);
            TextCubeFile.Text = isServer ? "Server" : "Cube File";
        }

        public string GetConnectionString() {
            if(CatalogOrCubeEmpty())
                return null;
            return GetConnectionStringCore() +
                ";Initial Catalog=" + (string)CatalogsCombo.EditValue +
                ";Cube Name=" + (string)CubesCombo.EditValue;
        }

        string GetConnectionStringCore() {
            return "Provider=msolap;Data Source=" + CubeEdit.Text;
        }

        void ShowMessage(string message) {
            DXMessageBox.Show(message, Application.Current.MainWindow.Title, MessageBoxButton.OK, MessageBoxImage.Error);
        }

        bool InitComboBox(List<string> items, ComboBoxEdit edit) {
            ClearCombo(edit);
            if(items!=null && items.Count > 0) {
                edit.Items.AddRange(items.ToArray());
                edit.SelectedItem = edit.Items[0];
                return true;
            }
            return false;
        }

        ButtonEdit CubeEdit { get; set; }
        RadioButton AnalysisServerRadio { get; set; }
        RadioButton CubeRadio { get; set; }
        TextBlock TextCubeFile { get; set; }

        void ApplyPlatformTemplate() {
            CubeEdit = GetTemplateChild(CubeEditName) as ButtonEdit;
            CubeEdit.EditValueChanged += new EditValueChangedEventHandler(CubeEdit_EditValueChanged);
            ConnectButton.IsEnabled = false;
            AnalysisServerRadio = GetTemplateChild(ServerRadioName) as RadioButton;
            CubeRadio = GetTemplateChild(CubeRadioName) as RadioButton;
            TextCubeFile = GetTemplateChild(TextCubeFileName) as TextBlock;
            AnalysisServerRadio.Checked += new RoutedEventHandler(AnalysisServerRadio_Checked);
            CubeRadio.Checked += new RoutedEventHandler(CubeRadio_Checked);
            CubeEdit.DefaultButtonClick += new RoutedEventHandler(CubeEdit_DefaultButtonClick);

        }

        void CubeEdit_EditValueChanged(object sender, EditValueChangedEventArgs e) {
            if(CubeEdit.Text.Length > 0)
                ConnectButton.IsEnabled = true;
            else ConnectButton.IsEnabled = false;
        }

        void CubeEdit_DefaultButtonClick(object sender, RoutedEventArgs e) {
            Microsoft.Win32.OpenFileDialog dialog = new Microsoft.Win32.OpenFileDialog();
            dialog.Filter = "Cube files (*.cub)|*.cub";
            if(dialog.ShowDialog() == true) {
                OpenCubeFile(dialog.FileName);
            }
        }

        void CubeRadio_Checked(object sender, RoutedEventArgs e) {
            UpdateControls();
        }

        void AnalysisServerRadio_Checked(object sender, RoutedEventArgs e) {
            UpdateControls();
        }

        void RetriveCubes() {
            if(!InitComboBox(metaGetter.GetCubes(CatalogsCombo.SelectedItem.ToString()), CubesCombo))
                ShowMessage("There is no catalogs in the cube file.");
            IsCubesRetriving = false;
        }
    }
}!�
using System;
using System.Windows;
using DevExpress.Xpf.Core.Native;
using DevExpress.Xpf.DemoBase;
using DevExpress.Xpf.PivotGrid;
using DevExpress.Xpf.Utils.Themes;
using DevExpress.Xpf.Printing;
using DevExpress.Xpf.Core;
using DependencyPropertyManager = System.Windows.DependencyProperty;

namespace PivotGridDemo.PivotGrid {
    public class PivotGridDemoModule : DemoModule {
        WeakReference Pivot = null;
        public static readonly DependencyProperty PivotGridControlProperty;

        static PivotGridDemoModule() {
            Type ownerType = typeof(PivotGridDemoModule);
            PivotGridControlProperty = DependencyPropertyManager.Register("PivotGridControl", typeof(PivotGridControl),
                ownerType, new PropertyMetadata(null, OnPivotGridControlChanged));
        }

        public static void OnPivotGridControlChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) {
            if(e.NewValue == null)
                return;
            ((PivotGridDemoModule)d).Pivot = new WeakReference(e.NewValue);
    }

        public PivotGridDemoModule() {
            Loaded += delegate(object sender, RoutedEventArgs e) {
                OnLoaded();
            };
        }

        protected override void RaiseIsPopupContentInvisibleChanged(System.Windows.DependencyPropertyChangedEventArgs e) {
            base.RaiseIsPopupContentInvisibleChanged(e);
            EnsurePivot();
            if(Pivot == null)
                return;
            PivotGridControl lastPivot = Pivot.Target as PivotGridControl;
            if(IsPopupContentInvisible && lastPivot != null)
                lastPivot.IsFieldListVisible = false;
        }

        public PivotGridControl PivotGridControl {
            get { return (PivotGridControl)GetValue(PivotGridControlProperty); }
            set { SetValue(PivotGridControlProperty, value); }
        }
        public override void OnApplyTemplate() {
            base.OnApplyTemplate();
            EnsurePivot();
        }

        void EnsurePivot() {
            if(PivotGridControl != null)
                return;
            DemoModuleControl.DemoContent = DemoModuleControl.FindDemoContent(typeof(PivotGridControl), (DependencyObject)Content);
            if(DemoModuleControl.DemoContent as FrameworkElement == null)
                return;
            PivotGridControl = LayoutHelper.FindElement(((FrameworkElement)DemoModuleControl.DemoContent), IsPivot) as PivotGridControl;
        }

        bool IsPivot(FrameworkElement element) {
            return element is PivotGridControl;
        }

        protected virtual void OnLoaded() {
            if(PivotGridControl != null && object.Equals(PivotGridControl.RowTotalsLocation, FieldRowTotalsLocation.Tree))
                PivotGridControl.BestFit(FieldArea.RowArea, true, false);
        }
        protected override object GetModuleDataContext() {
            return DemoModuleControl.FindDemoContent(typeof(PivotGridControl), (DependencyObject)Content);
        }
        protected virtual bool NeedChangeEditorsTheme { get { return false; } }
        protected override bool CanLeave() {
            return true;
        }
        protected override void Clear() {
            PivotGridControl = null;
        }

        public void ShowPrintPreview(PivotGridControl pivotGrid) {
            Window owner = LayoutHelper.FindParentObject<Window>(this);
            pivotGrid.ShowPrintPreview(owner);
        }
    }

}!Husing System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Xml;
using DevExpress.Data.Filtering;
using System.Data.SqlClient;
using System.Data;
using System.Windows.Threading;
using System.Threading;
using System.ComponentModel;
using DevExpress.XtraEditors.DXErrorProvider;
using DevExpress.Data;

namespace PivotGridDemo.PivotGrid {
    public static class SummaryItemTypesHelper {
        public static SummaryItemType[] SummaryItemTypes = new SummaryItemType[] {
            SummaryItemType.Sum,
            SummaryItemType.Min,
            SummaryItemType.Max,
            SummaryItemType.Count,
            SummaryItemType.Average
        };
        public static string[] FieldNames = new string[] {
                "UnitPrice",
                "Quantity",
                "Discount",
                "ExtendedPrice",
                "Freight",
                "Total"
        };
    }
    public enum Priority { Low, BelowNormal, Normal, AboveNormal, High }
    public class OutlookData {
        public static readonly User[] Users = new User[] {
            new User() { Id = 0, Name = "Peter Dolan"},
            new User() { Id = 1, Name = "Ryan Fischer"},
            new User() { Id = 2, Name = "Richard Fisher"},
            new User() { Id = 3, Name = "Tom Hamlett" },
            new User() { Id = 4, Name = "Mark Hamilton" },
            new User() { Id = 5, Name = "Steve Lee" },
            new User() { Id = 6, Name = "Jimmy Lewis" },
            new User() { Id = 7, Name = "Jeffrey W McClain" },
            new User() { Id = 8, Name = "Andrew Miller" },
            new User() { Id = 9, Name = "Dave Murrel" },
            new User() { Id = 10, Name = "Bert Parkins" },
            new User() { Id = 11, Name = "Mike Roller" },
            new User() { Id = 12, Name = "Ray Shipman" },
            new User() { Id = 13, Name = "Paul Bailey" },
            new User() { Id = 14, Name = "Brad Barnes" },
            new User() { Id = 15, Name = "Carl Lucas" },
            new User() { Id = 16, Name = "Jerry Campbell" },
        };
        public int OID { get; set; }
        public string Subject { get; set; }
        public string From { get; set; }
        public DateTime Sent { get; set; }
        public bool HasAttachment { get; set; }
        public long Size { get; set; }
        public double HoursActive { get; set; }
        public Priority Priority { get; set; }
        public int UserId { get; set; }
    }
    public class User {
        public int Id { get; set; }
        public string Name { get; set; }
        public override string ToString() {
            return Name;
        }
    }
    public static class OutlookDataGenerator {
        static Random rnd = new Random();
        public static string[] Subjects = new string[] { "Integrating Developer Express MasterView control into an Accounting System.",
                                                "Web Edition: Data Entry Page. There is an issue with date validation.",
                                                "Payables Due Calculator is ready for testing.",
                                                "Web Edition: Search Page is ready for testing.",
                                                "Main Menu: Duplicate Items. Somebody has to review all menu items in the system.",
                                                "Receivables Calculator. Where can I find the complete specs?",
                                                "Ledger: Inconsistency. Please fix it.",
                                                "Receivables Printing module is ready for testing.",
                                                "Screen Redraw. Somebody has to look at it.",
                                                "Email System. What library are we going to use?",
                                                "Cannot add new vendor. This module doesn't work!",
                                                "History. Will we track sales history in our system?",
                                                "Main Menu: Add a File menu. File menu item is missing.",
                                                "Currency Mask. The current currency mask in completely unusable.",
                                                "Drag & Drop operations are not available in the scheduler module.",
                                                "Data Import. What database types will we support?",
                                                "Reports. The list of incomplete reports.",
                                                "Data Archiving. We still don't have this features in our application.",
                                                "Email Attachments. Is it possible to add multiple attachments? I haven't found a way to do this.",
                                                "Check Register. We are using different paths for different modules.",
                                                "Data Export. Our customers asked us for export to Microsoft Excel"};

        public static string GetSubject() {
            return Subjects[rnd.Next(Subjects.Length - 1)];
        }

        public static string GetFrom() {
            return OutlookData.Users[GetFromId()].Name;
        }

        public static DateTime GetSentDate() {
            DateTime ret = DateTime.Today;
            int r = rnd.Next(12);
            if(r > 1)
                ret = ret.AddDays(-rnd.Next(50));
            return ret;
        }
        public static int GetSize(bool largeData) {
            return 1000 + (largeData ? 20 * rnd.Next(10000) : 30 * rnd.Next(100));
        }
        public static bool GetHasAttachment() {
            return rnd.Next(10) > 5;
        }
        public static Priority GetPriority() {
            return (Priority)rnd.Next(5);
        }
        public static int GetHoursActive() {
            return (int)Math.Round(rnd.NextDouble() * 1000, 1);
        }
        public static int GetFromId() {
            return rnd.Next(OutlookData.Users.Length);
        }
        public static OutlookData CreateNewObject() {
            OutlookData obj = new OutlookData();
            obj.Subject = GetSubject();
            obj.From = GetFrom();
            obj.Sent = GetSentDate();
            obj.HasAttachment = GetHasAttachment();
            obj.Size = GetSize(obj.HasAttachment);
            obj.Priority = GetPriority();
            obj.UserId = GetFromId();
            obj.HoursActive = GetHoursActive();
            return obj;
        }
        public static DataTable CreateOutlookDataTable(int rowCount) {
            DataTable table = new DataTable();
            table.Columns.Add("OID", typeof(int));
            table.Columns.Add("From", typeof(string));
            table.Columns.Add("ToId", typeof(int));
            table.Columns.Add("Sent", typeof(DateTime));
            table.Columns.Add("HasAttachment", typeof(bool));
            table.Columns.Add("Priority", typeof(int));
            table.Columns.Add("HoursActive", typeof(int));
            for(int i = 0; i < rowCount; i++) {
                DataRow row = table.NewRow();
                row["OID"] = i;
                row["From"] = GetFrom();
                row["ToId"] = GetFromId();
                row["Sent"] = GetSentDate();
                row["HasAttachment"] = GetHasAttachment();
                row["Priority"] = (int)GetPriority();
                row["HoursActive"] = GetHoursActive();
                table.Rows.Add(row);
            }
            return table;
        }
    }
}!O&using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Xml;
using DevExpress.Data.Filtering;
using System.Data.SqlClient;
using System.Data;
using System.Windows.Threading;
using System.Threading;
using System.ComponentModel;
using DevExpress.XtraEditors.DXErrorProvider;
using DevExpress.Data;

namespace PivotGridDemo.PivotGrid {
    public abstract class BindingCollection : CollectionBase, IBindingList {
        public virtual void OnListChanged(object item) { }
        public object AddNew() { return null; }
        public bool AllowEdit { get { return true; } }
        public bool AllowNew { get { return false; } }
        public bool AllowRemove { get { return true; } }

        private ListChangedEventHandler listChangedHandler;
        public event ListChangedEventHandler ListChanged {
            add { listChangedHandler += value; }
            remove { listChangedHandler -= value; }
        }
        internal void OnListChanged(ListChangedEventArgs args) {
            if(listChangedHandler != null) {
                listChangedHandler(this, args);
            }
        }
        protected override void OnRemoveComplete(int index, object value) {
            OnListChanged(new ListChangedEventArgs(ListChangedType.ItemDeleted, index));
        }
        protected override void OnInsertComplete(int index, object value) {
            OnListChanged(new ListChangedEventArgs(ListChangedType.ItemAdded, index));
        }

        public void AddIndex(PropertyDescriptor pd) { throw new NotSupportedException(); }
        public void ApplySort(PropertyDescriptor pd, ListSortDirection dir) { throw new NotSupportedException(); }
        public int Find(PropertyDescriptor property, object key) { throw new NotSupportedException(); }
        public bool IsSorted { get { return false; } }
        public void RemoveIndex(PropertyDescriptor pd) { throw new NotSupportedException(); }
        public void RemoveSort() { throw new NotSupportedException(); }
        public ListSortDirection SortDirection { get { throw new NotSupportedException(); } }
        public PropertyDescriptor SortProperty { get { throw new NotSupportedException(); } }
        public bool SupportsChangeNotification { get { return true; } }
        public bool SupportsSearching { get { return false; } }
        public bool SupportsSorting { get { return false; } }
    }
    public class Task {
        int fID;
        string fName;
        DateTime fDate;
        int fPercentComplete;
        bool fComplete;
        string fNote;

        BindingCollection fRelationCollection;
        public Task(BindingCollection relationCollection, int id, string name, DateTime date) {
            this.fRelationCollection = relationCollection;
            this.fID = id;
            this.fName = name;
            this.fDate = date;
            this.fPercentComplete = 0;
            this.fComplete = false;
            this.fNote = "";
        }

        public int ID {
            get { return fID; }
        }

        public string TaskName {
            get { return fName; }
            set {
                fName = value;
                OnListChanged();
            }
        }

        public DateTime DueDate {
            get { return fDate; }
            set {
                fDate = value;
                OnListChanged();
            }
        }

        public bool Complete {
            get { return fComplete; }
            set {
                fComplete = value;
                if(fComplete) fPercentComplete = 100;
                if(!fComplete && fPercentComplete == 100) fPercentComplete = 0;
                OnListChanged();
            }
        }

        public int PercentComplete {
            get { return fPercentComplete; }
            set {
                fPercentComplete = value;
                if(fPercentComplete < 0) fPercentComplete = 0;
                if(fPercentComplete > 100) fPercentComplete = 100;
                fComplete = fPercentComplete == 100;
                OnListChanged();
            }
        }

        public string Note {
            get { return fNote; }
            set {
                fNote = value;
                OnListChanged();
            }
        }

        public string CategoryName {
            get { return GetCategoryByTask((TasksWithCategories)fRelationCollection, this); }
        }

        static string GetCategoryByTask(TasksWithCategories collection, Task task) {
            string ret = "";
            for(int i = 0; i < collection.fCategories.Count; i++) {
                if(collection.HasCategory(task, collection.fCategories[i]))
                    ret += string.Format("{0}{1}", (ret == "" ? "" : ", "), collection.fCategories[i].CategoryName);
            }
            if(ret == "") ret = "<None>";
            return ret;
        }

        private void OnListChanged() {
            fRelationCollection.OnListChanged(this);
        }
    }
    public class Category {
        int fID;
        string fName;
        public Category(int id, string name) {
            this.fID = id;
            this.fName = name;
        }

        public int ID {
            get { return fID; }
        }

        public string CategoryName {
            get { return fName; }
            set { fName = value; }
        }
    }
    public class Relation {
        internal Task fTask;
        internal Category fCategory;
        public Relation(Task task, Category category) {
            this.fTask = task;
            this.fCategory = category;
        }
        public string TaskName {
            get { return fTask.TaskName; }
            set { fTask.TaskName = value; }
        }
        public DateTime DueDate {
            get { return fTask.DueDate; }
            set { fTask.DueDate = value; }
        }
        public string CategoryName {
            get { return fCategory.CategoryName; }
        }
        public bool Complete {
            get { return fTask.Complete; }
            set { fTask.Complete = value; }
        }

        public int PercentComplete {
            get { return fTask.PercentComplete; }
            set { fTask.PercentComplete = value; }
        }

        public string Note {
            get { return fTask.Note; }
            set { fTask.Note = value; }
        }
    }
    public class Tasks : BindingCollection {
        public static int MaxTasks = 7;
        public static Tasks GetTasks(TasksWithCategories collection) {
            Tasks ret = new Tasks();
            Random rnd = new Random();
            for(int i = 0; i < MaxTasks; i++) {
                ret.List.Add(new Task(collection, i + 1, "Task" + (i + 1).ToString(), DateTime.Today.AddDays(rnd.Next(5))));
                if(i == 2) ret[i].PercentComplete = 50;
                if(i == 6) ret[i].PercentComplete = 100;
            }
            return ret;
        }
        public Task this[int index] {
            get { return (Task)(List[index]); }
            set { List[index] = value; }
        }
    }
    public class Categories : BindingCollection {
        public static int MaxCategories = 6;
        public static Categories GetCategories(TasksWithCategories collection) {
            Categories ret = new Categories();
            string[] names = new string[] { "Business", "Competitor", "Favorites", "Gifts", "Goals", "Holiday", "Ideas", "International", "Personal" };
            for(int i = 0; i < names.Length; i++)
                ret.List.Add(new Category(i + 1, names[i]));
            return ret;
        }
        public Category this[int index] {
            get { return (Category)(List[index]); }
            set { List[index] = value; }
        }
    }
    public class TasksWithCategories : BindingCollection {
        internal Tasks fTasks;
        internal Categories fCategories;
        public TasksWithCategories() {
            fTasks = Tasks.GetTasks(this);
            fCategories = Categories.GetCategories(this);
        }
        public static TasksWithCategories GetTasksWithCategories() {
            TasksWithCategories ret = new TasksWithCategories();
            Random rnd = new Random();
            for(int i = 0; i < Tasks.MaxTasks; i++)
                for(int j = 0; j < 1 + rnd.Next(Categories.MaxCategories); j++) {
                    Category cat = ret.fCategories[rnd.Next(ret.fCategories.Count)];
                    if(!ret.HasCategory(ret.fTasks[i], cat))
                        ret.List.Add(new Relation(ret.fTasks[i], cat));
                }
            return ret;
        }
        public Relation this[int index] {
            get { return (Relation)(List[index]); }
            set { List[index] = value; }
        }
        public override void OnListChanged(object item) {
            if(item == null) return;
            for(int i = 0; i < this.Count; i++)
                if(item.Equals(this[i].fTask))
                    this.OnListChanged(new ListChangedEventArgs(ListChangedType.ItemChanged, i));
        }
        public bool HasCategory(Task task, Category category) {
            for(int i = 0; i < this.Count; i++)
                if(this[i].fCategory == category && this[i].fTask == task)
                    return true;
            return false;
        }
    }
}!�:00 �%6   ��% h�6(0` ��������������������������	�

��
������������ �!! �##"�$$#*��������������������������	�	
	��
�

������������!! �""!�$$#�&&%�''&*��������������������������	�	
	�

�
�

������������  �""!�#$#�%%$�''&�(('���������������������������	
	�

��

������������  �!"!�##"�%%$�''&�(('�**)��������������������������	�

��

������������ �!! �##"�$%$�&&%�(('�**)�++*�������������������������	�

��
�������������!! �"#"�$$#�&&%�''&�))(�++*�--,���������������������������	�	
	��
�

������������ ! �""!�$$#�%%$�''&�))(�++*�,,+�..-�����565���������������������	�	
	�

�
�

������������  �""!�##"�%%$�''&�(('�**)�,,+�.-,�//.����������������������������	
	�

��

������������  �!! �##"�%%$�&&%�(('�**)�++*�--,�//.�10/�������������������������������	�

��
������������ �!! �##"�$$#�&&%�(('�))(�++*�--,�..-�00/�221���������������������������������	�	
	��
�

������������!! �""!�$$#�&&%�''&�))(�++*�,,+�..-�00/�210�332�����������������������������������	�	
	�

�
�

������������  �""!�#$#�%%$�''&�(('�**)�,,+�..-�//.�110�332�543���������������������ddd��������������	
	�

��

������������  �!"!�##"�%%$�''&�(('�**)�,,+�--,�//.�110�321�443�665�������������������������ddd������������	�

��

������������ �!! �##"�$%$�&&%�(('�**)�++*�--,�/.-�10/�221�443�654�776�����������������������������ddd����������	�

��
�������������!! �"#"�$$#�&&%�''&�))(�++*�--,�..-�00/�221�432�554�776�987���������������������������������ddd��������	�	
	��
�

������������ ! �""!�$$#�%%$�''&�))(�++*�,,+�..-�0/.�110�332�554�765�887�::9����������������������������������������������	�	
	�

�
�

������������  �""!�##"�%%$�''&�(('�**)�,,+�.-,�//.�110�321�443�665�887�:98�;;:�������������������������������������������������	
	�

��

������������  �!! �##"�%%$�&&%�(('�**)�++*�--,�//.�10/�221�443�665�876�998�;;:�=<;���������������������������������������������������	�

��
������������ �!! �##"�$$#�&&%�(('�))(�++*�--,�..-�00/�221�432�554�776�998�;:9�=<;�>>=����������������������������������������������������676�	
	��
�

������������!! �""!�$$#�&&%�''&�))(�++*�,,+�..-�00/�210�332�554�765�987�::9�<<;�>=<�@?>�~�����������������������������������������������������fgf�
�

������������  �""!�#$#�%%$�''&�(('�**)�,,+�..-�//.�110�332�543�765�887�::9�<;:�>=<�??>�A@?�0N�}���������������������������������������������������������������������  �!"!�##"�%%$�''&�(('�**)�,,+�--,�//.�110�321�443�665�876�:98�;;:�==<�?>=�A@?�BBA�/N�/O�c|�����������������������������������������������������>?>��������� �!! �##"�$%$�&&%�(('�**)�++*�--,�/.-�10/�221�443�654�776�998�;:9�=<;�>>=�@@?�BA@�DCB�/N�/P�/Q�Us������������������������������������������������������������������!! �"#"�$$#�&&%�''&�))(�++*�--,�..-�00/�221�432�554�776�987�::9�<<;�>=<�@?>�BA@�CCB�EED�/O�/P�/Q�.R�;^���������������������������������������������������������RSR����� ! �""!�$$#�%%$�''&�))(�++*�,,+�..-�0/.�110�332�554�765�887�::9�<;:�>=<�??>�AA@�CBA�EDC�GFE�/O�/P�.Q�.R�.S�-U���������������������������������������������������������������++*��  �""!�##"�%%$�''&�(('�**)�,,+�.-,�//.�110�321�443�665�887�:98�;;:�==<�??>�A@?�CBA�EDC�FFE�HGF�/P�/Q�.R�.S�.T�-U�-V�b�������������������������������������������������������������//.�##"�%%$�&&%�(('�**)�++*�--,�//.�10/�221�443�665�876�998�;;:�=<;�?>=�A@?�BBA�DCB�FED�HGF�JIH�/P�/Q�.R�.S�.T�-U�-V�-W�9c��������������������������������������������������������������vvv�&&%�(('�))(�++*�--,�..-�00/�221�432�554�776�998�;:9�=<;�>>=�@@?�BA@�DCB�FED�GFE�IHG�KJI�/P�.Q�.R�.S�-U�-V�-W�,X�,Y�,Z�`���������������������������������������������������������������zzy�887�,,+�..-�00/�210�332�554�765�987�::9�<<;�>=<�@?>�BA@�CCB�EDC�GFE�IHG�JJI�LKJ�/Q�.R�.S�.T�-U�-V�-W�,X�,Y�,Z�+[�+\������������������������������������������������������������������<<;�110�332�543�765�887�::9�<;:�>=<�??>�A@?�CBA�EDC�FFE�HGF�JIH�LKJ�NML�/Q�.R�.S�.T�-U�-V�-W�,Y�,Z�,[�+\�+]�+^�Es����������������������������������������������������������������������ggf�665�876�:98�;;:�==<�?>=�A@?�BBA�DCB�FED�HGF�JIH�KKJ�MLK�ONM�.Q�.R�.S�-U�-V�-W�,X�,Y�,Z�+[�+\�+]�*^�*_�*`�Du��������������������������������������������������������������������������TSR�=<;�>>=�@@?�BA@�DCB�FED�GGF�IIH�KJI�MLK�ONM�QPO�.R�.S�.T�-U�-V�-W�,X�,Y�,Z�+[�+\�+]�*_�*`�*a�)b�)c�_�����������������������������������������������������������������������������ZYX�CCB�EED�GFE�IHG�KJI�MLK�NML�PON�RQP�.R�.S�.T�-U�-V�-W�,X�,Z�,[�+\�+]�+^�*_�*`�*a�)b�)c�)d�(e�Cy����������������������������������������������������������������������������������UUT�LKJ�NML�PON�RQP�SRQ�.R�.S�-U�-V�-W�,X�,Y�,Z�+[�+\�+]�*^�*_�*`�)a�)b�)d�(e�(f�(g�'h�5r��������������������������������������������������������������������������������������������ihg�UTS�.S�.T�-U�-V�-W�,X�,Y�,Z�+[�+\�+]�*_�*`�*a�)b�)c�)d�(e�(f�(g�'h�'i�'j�&k�\����������������������������������������������������������������������������������������.S�.T�-U�-V�-W�,X�,Z�,[�+\�+]�+^�*_�*`�*a�)b�)c�)d�(e�(f�(g�'h�'j�'k�&l�&m�&n�%o�i�����������������������������������������������������������������������������.S�-U�-V�-W�,X�,Y�,Z�+[�+\�+]�*^�*_�*`�)a�)b�)d�(e�(f�(g�'h�'i�'j�'k�&l�&m�&n�%o�%p�%q�$r�i������������������������������������������������������������������.T�-U�-V�-W�,X�,Y�,Z�+[�+\�+]�*_�*`�*a�)b�)c�)d�(e�(f�(g�'h�'i�'j�&k�&l�&m�%n�%o�%q�$r�$s�$t�#u�#v�?��v��������������������������������������������������.T�-U�-V�-W�,X�,Z�,[�+\�+]�+^�*_�*`�*a�)b�)c�)d�(e�(f�(g�'h�'j�'k�&l�&m�&n�%o�%p�%q�$r�$s�$t�#u�#v�#w�"x�"y�"z�/��Y������������������������������������-U�-V�-W�,X�,Y�,Z�+[�+\�+]�*^�*_�*`�)a�)b�)c�(e�(f�(g�'h�'i�'j�'k�&l�&m�&n�%o�%p�%q�$r�$s�$t�#u�#v�#w�"x�"z�"{�!|�!}�!~� � � ��<���X��������������-U�-V�-W�,X�,Y�,Z�+[�+\�+]�*_�*`�*a�)b�)c�)d�(e�(f�(g�'h�'i�'j�&k�&l�&m�%n�%o�%q�$r�$s�$t�#u�#v�#w�#x�"y�"z�"{�!|�!}�!~� � �� �� �� �� �� �� ��-U�-V�-W�,X�,Z�,[�+\�+]�+^�*_�*`�*a�)b�)c�)d�(e�(f�(g�'h�'i�'k�&l�&m�&n�%o�%p�%q�$r�$s�$t�#u�#v�#w�"x�"y�"z�!{�!|�!}�!~� � �� �� �� �� �� �� ��-V�-W�,X�,Y�,Z�+[�+\�+]�*^�*_�*`�)a�)b�)c�(e�(f�(g�'h�'i�'j�'k�&l�&m�&n�%o�%p�%q�$r�$s�$t�#u�#v�#w�"x�"y�"{�!|�!}�!~� � � �� �� �� �� �� �� ��-V��-W�,X�,Y�,Z�+[�+\�+]�*_�*`�*a�)b�)c�)d�(e�(f�(g�'h�'i�'j�&k�&l�&m�%n�%o�%q�$r�$s�$t�$u�#v�#w�#x�"y�"z�"{�!|�!}�!~� � �� �� �� �� �� �� �� ���-VЫ-W�,X�,Z�,[�+\�+]�+^�*_�*`�*a�)b�)c�)d�(e�(f�(g�'h�'i�'k�&l�&m�&n�%o�%p�%q�$r�$s�$t�#u�#v�#w�"x�"y�"z�!{�!|�!}�!~� � �� �� �� �� �� �� �� ��-W�',X��,Y�,Z�+[�+\�+]�*^�*_�*`�)a�)b�)c�(e�(f�(g�(h�'i�'j�'k�&l�&m�&n�%o�%p�%q�$r�$s�$t�#u�#v�#w�"x�"y�"z�!|�!}�!~� � � �� �� �� �� �� �� ��� ��*,X�,YӨ,Z��+[�+\�+]�*^�*`�*a�)b�)c�)d�(e�(f�(g�'h�'i�'j�&k�&l�&m�%n�%o�%p�$r�$s�$t�$u�#v�#w�#x�"y�"z�"{�!|�!}�!~� � �� �� �� �� �� ��� �� ����( @ H�����������������	�

�
���������!! �##"�&&%H������������������	
	��

�������� ! �##"�%%$�(('������������������	
	��

��������  �""!�%%$�''&�**)�����������������	�

�
���������""!�$$#�''&�))(�,,+�TUT���������������	�

�
���������!! �$$#�&&%�))(�++*�..-����565��������������	
	��
��������!! �##"�&&%�(('�++*�--,�00/��������������������	
	��

��������  �"#"�%%$�''&�**)�--,�//.�221�������������������	�

�
��������  �""!�$%$�''&�**)�,,+�/.-�110�443����������������������	�

�
���������!"!�$$#�&&%�))(�,,+�..-�10/�332�665������������������������	�

�
���������!! �##"�&&%�(('�++*�.-,�00/�321�554�887���������������������������	
	��

�������� ! �##"�%%$�(('�**)�--,�0/.�221�554�776�::9����������������������������	
	��

��������  �""!�%%$�''&�**)�,,+�//.�210�443�765�998�<<;�����������������������������%&%�	�

�
���������""!�$$#�''&�))(�,,+�..-�110�432�665�987�;;:�>>=����������������������������������WXW�
���������!! �$$#�&&%�))(�++*�..-�00/�332�654�887�;:9�>=<�@@?�/N����������������������������������������������!! �##"�&&%�(('�++*�--,�00/�221�554�876�::9�=<;�@?>�BBA�/O�/P��������������������������������������@@?�����  �"#"�%%$�''&�**)�--,�//.�221�543�776�:98�<<;�??>�BA@�EDC�/O�/Q�.R�p���������������������������������������))(�� �""!�$%$�''&�**)�,,+�/.-�110�443�765�998�<;:�?>=�AA@�DCB�GFE�/P�.Q�.S�-U�Gk�������������������������������������sss�!"!�$$#�&&%�))(�,,+�..-�10/�332�665�987�;;:�>=<�A@?�CCB�FED�IHG�/P�.R�.S�-U�-W�,X����������������������������������������\\\�(('�++*�.-,�00/�321�554�887�;:9�==<�@?>�CBA�EED�HGF�KJI�/Q�.R�.T�-V�-W�,Y�,Z�Fp�����������������������������������������||{�0/.�221�554�776�::9�=<;�??>�BA@�EDC�GGF�JIH�MLK�.Q�.S�-U�-V�,X�,Y�+[�+]�*^�_�����������������������������������������������PON�998�<<;�?>=�BA@�DCB�GFE�JIH�LKJ�ONM�.R�.S�-U�-W�,X�,Z�+[�+]�*_�*`�)b�z���������������������������������������������������YXW�DCB�FED�IHG�LKJ�NML�QPO�.R�.T�-V�-W�,Y�,Z�+\�+^�*_�*a�)b�)d�(f�^�������������������������������������������������������xww�NML�QPO�SRQ�.S�-T�-V�,X�,Y�+[�+]�*^�*`�)a�)c�(e�(f�(h�'i�B~������������������������������������������������������������.S�-U�-W�,X�,Z�+[�+]�*_�*`�)b�)c�(e�(g�'h�'j�&k�&m�%o�N���������������������������������������������������.T�-V�-W�,Y�,Z�+\�+^�*_�*a�)b�)d�(f�(g�'i�'j�&l�&n�%o�%q�$r�$t�?��v����������������������������������-T�-V�,X�,Y�+[�+]�*^�*`�)a�)c�(e�(f�(h�'i�'k�&l�&n�%p�%q�$s�$t�#v�#w�"y�"z�/��Y������������������-U�-W�,X�,Z�+[�+]�*_�*`�)b�)c�(e�(g�'h�'j�&k�&m�%o�%p�$r�$s�#u�#v�#x�"y�"{�!|�!~� � �� �� �� ��-V�-W�,Y�,Z�+\�+^�*_�*a�)b�)d�(f�(g�'i�'j�&l�&n�%o�%q�$r�$t�#u�#w�"x�"z�!{�!}� ~� �� �� �� �� ��-V�,X�,Y�+[�+]�*^�*`�)a�)c�)e�(f�(h�'i�'k�&l�&n�%p�%q�$s�$t�#v�#w�"y�"z�!|�!}� � �� �� �� �� ��-W��,X�,Z�+[�+]�*_�*`�)b�)c�(e�(g�'h�'j�&k�&m�%o�%p�$r�$s�#u�#v�#x�"y�"{�!|�!~� � �� �� �� �� ���-W�;,Y��,Z�+\�+^�*_�*a�)b�)d�(f�(g�'i�'j�&l�&m�%o�%q�$r�$t�#u�#w�"x�"z�!{�!}� ~� �� �� �� �� ��� ��;(  ���������	
	�

����!! �%&%���������	�
���� �$$#�))(�CCC�������	�
�����##"�(('�--,�����565�����������""!�''&�,,+�110������������

�����!! �&&%�++*�00/�654����������565��	
	�

����  �%%$�**)�//.�443�:98��������������FGF�
�����$$#�))(�..-�332�887�>=<�;Y�����������������������##"�(('�--,�221�776�=<;�BA@�/P�;^������������������VVU�""!�''&�,,+�110�665�;;:�A@?�FED�.Q�-T�,X�a��������������������RRQ�0/.�554�::9�@?>�EDC�JJI�.R�-U�,Y�+\�*_�������������������������JJI�DCB�IHG�ONM�.S�-W�,Z�+]�*`�)c�(g�x����������������������������{zy�-T�,X�,[�+^�*a�)d�(h�'k�&n�@�������������������-U�,Y�+\�*_�)b�(e�'i�&l�%o�$r�#u�"x�!{�:��T���y���-V�,Z�+]�*`�)c�(f�'j�&m�%p�$s�#v�"y�!|� � �� ��-Xѽ,[�+^�*a�)d�(h�'k�&n�%q�$t�#w�"z�!}� �� �� ���A�A�A�A�A�A�A�A�A�A�A�A�A�A�A�A!"using System;
using System.Collections.Generic;
using System.Windows;
using DevExpress.Xpf.Core.Native;
using DevExpress.Xpf.DemoBase;
using DevExpress.Xpf.DemoBase.DemoTesting;
using DevExpress.Xpf.DemoBase.Helpers;
using DevExpress.Xpf.DemoBase.Helpers.TextColorizer;
using DevExpress.Xpf.Editors;
using System.Windows.Controls;
using DevExpress.Xpf.Editors.Helpers;

using DevExpress.Xpf.PivotGrid;
using PivotGridDemo.PivotGrid;
using DevExpress.Xpf.PivotGrid.Internal;
using DevExpress.Xpf.Printing;
using DevExpress.Xpf.Core;

namespace PivotGridDemo.Tests {
    public class PivotGridCheckAllDemosFixture : CheckAllDemosFixture {

        protected override bool CanRunModule(Type moduleType) {
            return base.CanRunModule(moduleType) && moduleType.Name != "AsyncMode"
            ;
        }


        protected override void CreateCheckOptionsAction() {
            base.CreateCheckOptionsAction();
            AddCheck0();
            CreateCheck1();
        }

        private void CreateCheck1() {
            AddSimpleAction(
                delegate() {
                    if(DemoBaseTesting.CurrentDemoModule.GetType() == typeof(ChartGeneralOptions))
                        HidePrefilterAction();
                });
            AddSimpleAction(
                delegate() {
                    AssertHeadersFilterButtonVisibilityB183058();
                });
            AddSimpleAction(
                delegate() {
                    AssertTextEditsWidthB185051();
                 });
            AddSimpleAction(
                delegate() {
                    TextBlockTextTrimmingB185312();
                });
            AddSimpleAction(
                delegate() {
                    if(DemoBaseTesting.CurrentDemoModule.GetType() == typeof(PrintTemplates))
                        ExportAction();
                });
        }

        private void AddCheck0() {
            AddSimpleAction(ComboBoxItemsEditableB181973);
            AddSimpleAction(
                delegate() {
                    if(DemoBaseTesting.CurrentDemoModule.GetType() == typeof(ChartGeneralOptions))
                        ShowPrefilterAction();
                });
            AddSimpleAction(delegate() {
                if(DemoBaseTesting.CurrentDemoModule.GetType() == typeof(ChartGeneralOptions))
                    BestFitAction();
            });
        }

        private void ExportAction() {
            PivotGridControl pivotGrid = FindElement<PivotGridControl>(DemoBaseTesting.CurrentDemoModule);
            FloatingContainer cont = PrintHelper.ShowPrintPreview(pivotGrid, pivotGrid);
            DispatcherHelper.DoEvents();
            DateTime start = DateTime.Now + new TimeSpan(0, 0, 0, 1);
            while(DateTime.Now < start)
                DispatcherHelper.DoEvents();
            cont.Close();
            DispatcherHelper.DoEvents();
        }

        void TextBlockTextTrimmingB185312() {
            FrameworkElement control = ((DemoModule)DemoBaseTesting.CurrentDemoModule).DemoModuleControl.OptionsContent;
            if(control == null) return;
            List<TextBlock> editors = FindAllElements<TextBlock>(control);
            foreach(TextBlock edit in editors) {
                bool trimmed = TextBlockService.CalcIsTextTrimmed(edit) && edit.DesiredSize.Width != edit.ActualWidth;
                AssertLog.IsFalse(trimmed, "Text is trimmed: " + DemoBaseTesting.CurrentDemoModule.GetType().Name + " text=" + edit.Text + ", Name=" + edit.Name +
                    ", actual " + edit.ActualWidth + "px, desired:" + edit.DesiredSize.Width + "px");
            }
        }

        void AssertTextEditsWidthB185051() {
            FrameworkElement control = ((DemoModule)DemoBaseTesting.CurrentDemoModule).DemoModuleControl.OptionsContent;
            if(control == null) return;
            List<TextEdit> editors = FindAllElements<TextEdit>(control);
            foreach(TextEdit edit in editors) {
                if(edit.EditMode == EditMode.InplaceInactive || edit.IsPrintingMode == true)
                    continue;
                AssertLog.IsFalse(edit.Width == Double.PositiveInfinity, "TextEdit unlimited width: " + DemoBaseTesting.CurrentDemoModule.GetType().Name + " text=" + edit.Text + ", Name=" + edit.Name + " desired " + edit.ActualWidth + "px");
            }
        }

        private void AssertHeadersFilterButtonVisibilityB183058() {
            PivotGridControl pivotGrid = FindElement<PivotGridControl>(DemoBaseTesting.CurrentDemoModule);
            List<FieldHeader> headers = FindAllElements<FieldHeader>(pivotGrid);
            foreach(FieldHeader header in headers) {
                PivotGridField field = header.Field;
                bool fieldFiltered = GetIsFiltered(field);
                Visibility filterVisibility = fieldFiltered || header.IsMouseOver ? Visibility.Visible : Visibility.Hidden;
                if(!field.GetInternalField().ShowFilterButton)
                    filterVisibility = Visibility.Collapsed;
                if(filterVisibility != Visibility.Collapsed)
                    AssertLog.IsTrue(fieldFiltered == field.IsFiltered, "field.IsFiltered " +
                                                DemoBaseTesting.CurrentDemoModule.GetType().Name +
                                                                    " " + field.Name + " expected\real:" + fieldFiltered.ToString() + " \\ " + field.IsFiltered.ToString());
                AssertLog.IsTrue(filterVisibility == header.IsFilterButtonVisible, "header.IsFiltered " +
                                            DemoBaseTesting.CurrentDemoModule.GetType().Name +
                                                                " " + field.Name + " expected\real:" + filterVisibility.ToString() + " \\ " + header.IsFilterButtonVisible.ToString());
            }
        }

        bool GetIsFiltered(PivotGridField field) {
            PivotGridInternalField internalField = field.GetInternalField();
            return ((internalField.Group == null || internalField.GroupFilterMode.Equals(DevExpress.XtraPivotGrid.PivotGroupFilterMode.List)) && !internalField.FilterValues.IsEmpty)
                || field.Group != null && internalField.GroupFilterMode.Equals(DevExpress.XtraPivotGrid.PivotGroupFilterMode.Tree) && !field.Group.FilterValues.IsEmpty;
        }

        void ComboBoxItemsEditableB181973() {
            FrameworkElement control = ((DemoModule)DemoBaseTesting.CurrentDemoModule).DemoModuleControl.OptionsContent;
            if(control == null) return;
            List<ComboBoxEdit> editors = FindAllElements<ComboBoxEdit>(control);
            for(int i = 0;i < editors.Count;i++) {
                AssertLog.IsFalse(editors[i].IsTextEditable, "ComboBoxEdit items editable: " + DemoBaseTesting.CurrentDemoModule.GetType().Name + " " + editors[i].Name);
                AssertLog.IsFalse(editors[i].SelectedIndex < 0, "ComboBoxEdit item is not selected: " + DemoBaseTesting.CurrentDemoModule.GetType().Name + " " + editors[i].Name);
            }
        }

        bool ChartGeneralOptionsCondition() {
            return DemoBaseTesting.CurrentDemoModule.GetType() == typeof(ChartGeneralOptions);
        }

        void BestFitAction() {
            PivotGridControl pivotGrid = FindElement<PivotGridControl>(DemoBaseTesting.CurrentDemoModule);
            pivotGrid.BestFit();
        }
        void HidePrefilterAction() {
            PivotGridControl pivotGrid = FindElement<PivotGridControl>(DemoBaseTesting.CurrentDemoModule);
            if(pivotGrid.PrefilterContainer != null)
                pivotGrid.PrefilterContainer.Close();
            UpdateLayoutAndDoEvents();
        }

        void ShowPrefilterAction() {
            PivotGridControl pivotGrid = FindElement<PivotGridControl>(DemoBaseTesting.CurrentDemoModule);
            pivotGrid.ShowPrefilter();
            UpdateLayoutAndDoEvents();
        }

        List<T> FindAllElements<T>(FrameworkElement element) where T : FrameworkElement {
            List<T> items = new List<T>();
            LayoutHelper.ForEachElement(element, d => addItem<T>(items, d));
            return items;
        }
        bool addItem<T>(List<T> items, FrameworkElement d) where T : FrameworkElement {
            if(d.GetType() == typeof(T)) items.Add((T)d);
            return true;
        }

        T FindElement<T>(FrameworkElement element) where T : FrameworkElement {
            return (T)LayoutHelper.FindElement(element, d => d.GetType() == typeof(T));
        }
    }
}!�MSBAML```����IEPivotGridDemo, Version=13.1.4.0, Culture=neutral, PublicKeyToken=nullA%clr-namespace:PivotGridDemo.PivotGridPivotGridDemo.PivotGrid\XPresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNWindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35WSPresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNSystem.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089a]DevExpress.Xpf.Core.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a�MergedDictionaries
�Source3-DevExpress.Xpf.Core.DemoBaseResourceExtension�D9http://schemas.microsoft.com/winfx/2006/xaml/presentation:x,http://schemas.microsoft.com/winfx/2006/xaml;dx2http://schemas.devexpress.com/winfx/2008/xaml/core/local%clr-namespace:PivotGridDemo.PivotGrid�*Themes/Generic.xaml+�$@:/PivotGridDemo;component/Controls/ControlStyles/Panel.xaml?��$MG/PivotGridDemo;component/Controls/ControlStyles/InplaceProgressBar.xaml?�%!a$using System;
using System.Data;
using System.IO;
using System.Windows;
using DevExpress.DemoData.Helpers;
using DevExpress.Xpf.Core;
using DevExpress.Xpf.DemoBase;
using DevExpress.Xpf.DemoBase.Helpers;
using DevExpress.Xpf.PivotGrid;
using DevExpress.XtraPivotGrid.Data;

namespace PivotGridDemo.PivotGrid.Helpers {
    public enum InitializerDataSource {
        OlapCube,
        TableDataSource,
    }
    public abstract class AsynchronousPivotInitializer {
        static string adventureWorksFileName;
        protected const int DefaultFieldWidth = 90;

        public static void Initialize(PivotGridControl pivot, AsyncCompletedHandler initCompletedCallback, InitializerDataSource dataSource) {
            AsynchronousPivotInitializer initializer;
            switch(dataSource) {
                case InitializerDataSource.OlapCube:
                    initializer = new AsynchronousPivotInitializerSampleOlapDB(pivot, initCompletedCallback);
                    initializer.Initialize();
                    break;
                case InitializerDataSource.TableDataSource:
                    initializer = new AsynchronousPivotInitializerGeneratedDB(pivot, initCompletedCallback);
                    initializer.Initialize();
                    break;
                default:
                    throw new ArgumentException("Incorrect InitializerDataSource enum value.", "dataSource");
            }
        }
        protected AsynchronousPivotInitializer(PivotGridControl pivot, AsyncCompletedHandler initCompletedCallback) {
            PivotGrid = pivot;
            ResetPivotGrid(PivotGrid);
            InitializationCompletedCallback = initCompletedCallback;
        }
        protected PivotGridControl PivotGrid { get; set; }
        protected AsyncCompletedHandler InitializationCompletedCallback { get; set; }
        static string AdventureWorksSampleFileName {
            get {
                if(string.IsNullOrEmpty(adventureWorksFileName)) {
                    adventureWorksFileName = Path.GetFullPath(DataFilesHelper.FindFile(GetAdventureWorksSampleFileName(), DataFilesHelper.DataPath));
                    if(File.Exists(adventureWorksFileName))
                        File.SetAttributes(adventureWorksFileName, FileAttributes.Normal);
                }
                return adventureWorksFileName;
            }
        }
        static string GetAdventureWorksSampleFileName() {
            return "AdventureWorks.cub";
        }
        protected static string OLAPSampleConnectionString {
            get {
                if(string.IsNullOrEmpty(AdventureWorksSampleFileName)) return null;
                return "Provider=msolap;Data Source=" + AdventureWorksSampleFileName + ";Initial Catalog=Adventure Works;Cube Name=Adventure Works";
            }
        }
        static void ResetPivotGrid(PivotGridControl pivot) {
            if(string.IsNullOrEmpty(pivot.OlapConnectionString))
                pivot.Groups.Clear();
            pivot.Fields.Clear();
            pivot.DataSource = null;
        }
        protected abstract void Initialize();
    }

    class AsynchronousPivotInitializerGeneratedDB : AsynchronousPivotInitializer {
        public AsynchronousPivotInitializerGeneratedDB(PivotGridControl pivot, AsyncCompletedHandler initCompletedCallback)
            : base(pivot, initCompletedCallback) {
        }
        protected override void Initialize() {
            DatabaseHelper.GetDataSetAsync(SetDataSourceGeneratedDatabase);
        }
        void SetDataSourceGeneratedDatabase(DataSet dataSet) {
            if(dataSet == null) {
                PivotGrid.IsEnabled = false;
                InitializationCompletedCallback.Invoke(null);
                return;
            }
            PivotGrid.SetDataSourceAsync(dataSet.Tables[0], InitPivotLayoutGeneratedDB);
        }
        void InitPivotLayoutGeneratedDB(AsyncOperationResult result) {
            PivotGrid.BeginUpdate();
            PivotGridField fieldSalesPerson = CreatePivotGridField("SalesPersonName", "Sales Person", FieldArea.RowArea);
            PivotGridField fieldCustomer = CreatePivotGridField("CustomerName", "Customer", FieldArea.FilterArea);
            PivotGridField fieldQuantity = CreatePivotGridField("Quantity", "Quantity", FieldArea.DataArea);
            PivotGridField fieldUnitPrice = CreatePivotGridField("UnitPrice", "Unit Price", FieldArea.DataArea);
            fieldUnitPrice.SummaryType = FieldSummaryType.Average;
            fieldUnitPrice.ShowSummaryTypeName = true;
            PivotGridField fieldOrderID = CreatePivotGridField("OrderID", "Order ID", FieldArea.FilterArea);
            PivotGridField fieldCategory = CreatePivotGridField("CategoryName", "Category", FieldArea.RowArea);
            PivotGridField fieldProduct = CreatePivotGridField("ProductName", "Product", FieldArea.RowArea);
            PivotGridField fieldOrderDateYear = CreatePivotGridField("OrderDate", "Year", FieldArea.ColumnArea);
            fieldOrderDateYear.GroupInterval = FieldGroupInterval.DateYear;
            PivotGridField fieldOrderDateMonth = CreatePivotGridField("OrderDate", "Month", FieldArea.ColumnArea);
            fieldOrderDateMonth.GroupInterval = FieldGroupInterval.DateMonth;
            PivotGridField fieldPrice = new PivotGridField();
            fieldPrice.Area = FieldArea.DataArea;
            fieldPrice.Caption = "Price";
            fieldPrice.UnboundType = FieldUnboundColumnType.Decimal;

            fieldQuantity.Width = DefaultFieldWidth;
            fieldUnitPrice.Width = DefaultFieldWidth;
            fieldPrice.Width = DefaultFieldWidth;

            PivotGrid.Fields.AddRange(new PivotGridField[] { fieldSalesPerson, fieldCustomer, fieldQuantity, fieldUnitPrice,
                                fieldOrderID, fieldCategory, fieldProduct, fieldOrderDateYear, fieldOrderDateMonth, fieldPrice });
            PivotGrid.Groups.Add(fieldOrderDateYear, fieldOrderDateMonth);

            fieldPrice.UnboundExpression = "[" + fieldQuantity.ExpressionFieldName + "] * [" + fieldUnitPrice.ExpressionFieldName + "]";
            PivotGrid.EndUpdateAsync(InitializationCompletedCallback);
        }
        PivotGridField CreatePivotGridField(string fieldName, string caption, FieldArea area) {
            PivotGridField field = new PivotGridField(fieldName, area);
            field.Caption = caption;
            return field;
        }
    }

    class AsynchronousPivotInitializerSampleOlapDB : AsynchronousPivotInitializer {
        const string YearFieldName = "[Date].[Calendar].[Calendar Year]";
        const string CategoryFieldName = "[Product].[Product Categories].[Category]";
        const string TotalCostFieldName = "[Measures].[Total Product Cost]";
        const string FreightFieldName = "[Measures].[Freight Cost]";
        const string QuantityOrderFieldName = "[Measures].[Order Quantity]";

        public AsynchronousPivotInitializerSampleOlapDB(PivotGridControl pivot, AsyncCompletedHandler initCompletedCallback)
            : base(pivot, initCompletedCallback) {
        }
        protected override void Initialize() {
            try {
                PivotGrid.SetOlapConnectionStringAsync(OLAPSampleConnectionString, InitPivotLayoutSampleOlapDB);
            } catch(OLAPConnectionException) {
                PivotGrid.OlapConnectionString = null;
                PivotGrid.IsEnabled = false;
                InitializationCompletedCallback.Invoke(null);
            }
        }
        void InitPivotLayoutSampleOlapDB(AsyncOperationResult result) {
            PivotGrid.RetrieveFields(FieldArea.FilterArea, false);
            if(PivotGrid.Fields.Count == 0) {
                InitializationCompletedCallback.Invoke(null);
                return;
            }
            PivotGrid.BeginUpdate();
            PivotGridField fieldProduct = PivotGrid.Fields[CategoryFieldName],
                fieldYear = PivotGrid.Fields[YearFieldName],
                fieldTotalCost = PivotGrid.Fields[TotalCostFieldName],
                fieldFreightCost = PivotGrid.Fields[FreightFieldName],
                fieldOrderQuantity = PivotGrid.Fields[QuantityOrderFieldName];
            PivotGrid.Groups[1].Caption = "Calendar";
            PivotGrid.Groups[2].Caption = "Products";

            fieldProduct.Area = FieldArea.RowArea;
            fieldYear.Area = FieldArea.ColumnArea;
            fieldYear.SortOrder = FieldSortOrder.Descending;
            fieldTotalCost.Width = DefaultFieldWidth;
            fieldTotalCost.CellFormat = "c2";
            fieldFreightCost.Width = DefaultFieldWidth;
            fieldFreightCost.CellFormat = "c2";
            fieldOrderQuantity.Width = DefaultFieldWidth;

            fieldProduct.Visible = true;
            fieldYear.Visible = true;
            fieldTotalCost.Visible = true;
            fieldFreightCost.Visible = true;
            fieldOrderQuantity.Visible = true;

            PivotGrid.EndUpdateAsync(ExpandAll);
        }
        void ExpandAll(AsyncOperationResult result) {
            PivotGrid.ExpandAllAsync(InitializationCompletedCallback);
        }
    }
}!�Dusing DevExpress.Xpo;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.IO;
using System.Text;
using System.Xml;
using DevExpress.Xpf.Core;
using System.Windows;
using System.Windows.Input;

namespace PivotGridDemo.PivotGrid.Helpers {
    public delegate void UpdateProgressCallback(int percents);
    public delegate void DatabaseGeneratedCallback();
    public delegate void DataSetFilledCallback(DataSet dataSet);

    public static class DatabaseHelper {
        readonly static Random random = new Random();
        readonly static BackgroundWorker worker = new BackgroundWorker();
        static readonly string[] Names = { "Julia", "Stephanie", "Alex", "John", "Curtis", "Keith", "Timothy", "Jack", "Miranda", "Alice" };
        static readonly string[] LastNames = { "Black", "White", "Brown", "Smith", "Cooper", "Parker", "Walker", "Hunter", "Burton", "Douglas", "Fox", "Simpson" };
        static readonly string[] Adjectives = { "Ancient", "Modern", "Mysterious", "Elegant", "Red", "Green", "Blue", "Amazing", "Wonderful", "Astonishing", "Lovely", "Beautiful", "Inexpensive", "Famous", "Magnificent", "Fancy" };
        static readonly string[] ProductNames = { "Ice Cubes", "Bicycle", "Desk", "Hamburger", "Notebook", "Tea", "Cellphone", "Butter", "Frying Pan", "Napkin",
              "Armchair", "Chocolate", "Yoghurt", "Statuette", "Keychain" };
        static readonly string[] CategoryNames = { "Business", "Presents", "Accessories", "Home", "Hobby" };

        static DatabaseHelper() {
            worker.DoWork += GenerateDatabaseAsyncCore;
            worker.WorkerReportsProgress = true;
            worker.WorkerSupportsCancellation = true;
        }
        public static bool IsGenerating { get { return worker.IsBusy; } }
        public static void GenerateDatabaseAsync(int rowsCount, UpdateProgressCallback updateProgressCallback, DatabaseGeneratedCallback databaseGeneratedCallback) {
            worker.ProgressChanged += delegate(object sender, ProgressChangedEventArgs e) { updateProgressCallback(e.ProgressPercentage); };
            worker.RunWorkerCompleted += delegate(object sender, RunWorkerCompletedEventArgs e) { databaseGeneratedCallback(); };
            worker.RunWorkerAsync(rowsCount);
        }
        public static void CancelDatabaseGenerationAsync() {
            worker.CancelAsync();
        }
        static void GenerateDatabaseAsyncCore(object sender, DoWorkEventArgs e) {
            worker.ReportProgress(0);
            int rowsCount = (int)e.Argument;
            int rowsRemaining = rowsCount;
            using(UnitOfWork uow = new UnitOfWork()) {
                try {
                    uow.ClearDatabase();
                } catch { }
                int salesPersonCount = random.Next(10, 15);
                int customersCount = random.Next(30, 50);
                int productsCount = random.Next(80, 100);
                List<string> peopleNames = GeneratePeopleNames(salesPersonCount + customersCount);
                List<string> productNames = GenerateProductNames(productsCount);
                int indexPersonName = 0;

                XPCollection<SalesPerson> salesPeople = new XPCollection<SalesPerson>(uow);
                for(int i = 0; i < salesPersonCount; i++)
                    salesPeople.Add(new SalesPerson(uow, peopleNames[indexPersonName++]));

                XPCollection<Customer> customers = new XPCollection<Customer>(uow);
                for(int i = 0; i < customersCount; i++)
                    customers.Add(new Customer(uow, peopleNames[indexPersonName++]));

                XPCollection<Category> categories = new XPCollection<Category>(uow);
                for(int i = 0; i < CategoryNames.Length; i++)
                    categories.Add(new Category(uow, CategoryNames[i]));

                XPCollection<Product> products = new XPCollection<Product>(uow);
                for(int i = 0; i < productsCount; i++)
                    products.Add(new Product(uow, productNames[i], categories[random.Next(categories.Count)], random.Next(500)));

                do {
                    Order order = new Order(uow, salesPeople[random.Next(salesPeople.Count)], customers[random.Next(customers.Count)], GetDate());
                    int salesCount = rowsRemaining >= 5 ? random.Next(1, 6) : rowsRemaining;
                    for(int j = 0; j < salesCount; j++) {
                        Product product = products[random.Next(products.Count)];
                        new Sale(uow, order, product, random.Next(1, 100), GetProductPrice(product));
                        rowsRemaining--;
                    }
                    uow.CommitChanges();
                    worker.ReportProgress(rowsCount - rowsRemaining);
                } while(!worker.CancellationPending && rowsRemaining > 0);
                uow.FlushChanges();
            }
        }
        static List<string> GeneratePeopleNames(int count) {
            List<string> names = new List<string>(count);
            while(names.Count < count) {
                string name = GenerateName();
                if(!names.Contains(name))
                    names.Add(name);
            }
            return names;
        }
        static List<string> GenerateProductNames(int count) {
            List<string> names = new List<string>(count);
            while(names.Count < count) {
                string name = GenerateProductName();
                if(!names.Contains(name))
                    names.Add(name);
            }
            return names;
        }
        static string GenerateName() {
            return String.Format("{0} {1}", Names[random.Next(Names.Length)], LastNames[random.Next(LastNames.Length)]);
        }
        static string GenerateProductName() {
            return String.Format("{0} {1}", Adjectives[random.Next(Adjectives.Length)], ProductNames[random.Next(ProductNames.Length)]);
        }
        static decimal GetProductPrice(Product product) {
            return product.Price * (decimal)(0.5 + random.NextDouble());
        }
        static DateTime GetDate() {
            return new DateTime(random.Next(2008, 2011), random.Next(1, 13), random.Next(1, 28));
        }
        public static void GetDataSetAsync(DataSetFilledCallback callback) {
            BackgroundWorker workerDataSetFiller = new BackgroundWorker();
            workerDataSetFiller.DoWork += GetDataSetAsyncCore;
            workerDataSetFiller.RunWorkerCompleted += delegate(object s, RunWorkerCompletedEventArgs e) {
                callback(e.Error == null ? (DataSet)e.Result : null);
            };
            workerDataSetFiller.RunWorkerAsync();
            workerDataSetFiller.Dispose();
        }
        static void  GetDataSetAsyncCore(object sender, DoWorkEventArgs e) {
            OleDbConnection connection = new OleDbConnection("Provider=SQLOLEDB;" + ServerParameters.GetDBConnectionString());
            OleDbDataAdapter adapter = new OleDbDataAdapter("select Orders.OID as OrderID, SalesPersonName, CustomerName, CategoryName, ProductName, Quantity, UnitPrice, OrderDate " +
                "from orders " +
                "join Sales on Sales.[Order] = Orders.OID " +
                "join SalesPeople on Orders.SalesPerson = SalesPeople.OID " +
                "join Customers on Orders.Customer = Customers.OID " +
                "join Products on Sales.Product = Products.OID " +
                "join Categories on Products.Category = Categories.OID", connection);
            DataSet dataSet = new DataSet();
            try {
                adapter.Fill(dataSet, "orders");
                e.Result = dataSet;
            } catch(OleDbException) {
                e.Result = null;
            } finally {
                connection.Dispose();
            }
        }
        public static int CalculateRecordCount() {
            try {
                using(SqlConnection connection = new SqlConnection(ServerParameters.GetServerConnectionString())) {
                    connection.Open();
                    using(SqlCommand command = new SqlCommand(String.Format("select count(OID) as count from [{0}].[dbo].[Sales]", ServerParameters.DBName), connection)) {
                        using(SqlDataReader reader = command.ExecuteReader()) {
                            reader.Read();
                            return (int)reader["count"];
                        }
                    }
                }
            } catch {
                return -1;
            }
        }
        public static void TestConfiguration() {
            ServerParameters.IsParametersCorrect();
        }
    }

    public class ServerParameters {
        #region Singleton
        public
        ServerParameters() { }
        static ServerParameters fInstance;
        static ServerParameters Instance {
            get {
                if(fInstance == null)
                    fInstance = new ServerParameters();
                return fInstance;
            }
        }
        #endregion
        const string ServerParametersFileName = "PivotGridSQLParameters.xml";
        string fServer = "(local)";
        string fLogin = "sa";
        string fPassword = string.Empty;
        bool fUseWindowsAuthentication = true;

        public static string DBName { get { return "PivotGridDemoDB"; } }
        public static string Server {
            get { return Instance.fServer; }
            set { Instance.fServer = value; }
        }
        public static string Login {
            get { return Instance.fLogin; }
            set { Instance.fLogin = value; }
        }
        public static string Password {
            get { return Instance.fPassword; }
            set { Instance.fPassword = value; }
        }
        public static bool UseWindowsAuthentication {
            get { return Instance.fUseWindowsAuthentication; }
            set { Instance.fUseWindowsAuthentication = value; }
        }
        public static void LoadParameters() {
            if(!File.Exists(ServerParametersFileName)) return;
            XmlDocument doc = new XmlDocument();
            try {
                doc.Load(ServerParametersFileName);
                if(doc.DocumentElement.Name == "Parameters") {
                    string[] parameters = doc.DocumentElement.InnerText.Split(new char[] { ';' });
                    Server = parameters[0];
                    UseWindowsAuthentication = Convert.ToBoolean(parameters[1]);
                    Login = parameters[2];
                }
            } catch { }
        }
        public static void SaveParameters() {
            try {
                using(XmlTextWriter writer = new XmlTextWriter(ServerParametersFileName, Encoding.UTF8)) {
                    writer.WriteElementString("Parameters", string.Format("{0};{1};{2}", Server, UseWindowsAuthentication, Login));
                }
            } catch { }
        }
        public static string GetServerConnectionString() {
            if(UseWindowsAuthentication) {
                return String.Format("data source={0};integrated security=SSPI;connection timeout=3", Server);
            } else {
                return String.Format("data source={0};user id={1};password={2};connection timeout=3", Server, Login, Password);
            }
        }
        public static string GetDBConnectionString() {
            return String.Format("{0};initial catalog={1}", GetServerConnectionString(), DBName);
        }
        public static bool IsParametersCorrect() {
            Mouse.OverrideCursor = Cursors.Wait;
            using(SqlConnection connection = new SqlConnection(GetServerConnectionString())) {
                try {
                    connection.Open();
                    connection.Close();
                } catch {
                    DXMessageBox.Show("Failed to connect to the server.", "Connection Error", MessageBoxButton.OK, MessageBoxImage.Error);
                    return false;
                } finally {
                    Mouse.OverrideCursor = null;
                }
            }
            return true;
        }
    }

    #region XPOs
    [Persistent("SalesPeople")]
    public class SalesPerson : XPObject {
        string name;

        public SalesPerson(Session session)
            : base(session) { }
        public SalesPerson(Session session, string name)
            : this(session) {
            Name = name;
        }
        [Persistent("SalesPersonName")]
        public string Name { get { return name; } set { SetPropertyValue("Name", ref name, value); } }
        [Association("SalesPeople-Orders")]
        public XPCollection<Order> Orders { get { return GetCollection<Order>("Orders"); } }
    }

    [Persistent("Customers")]
    public class Customer : XPObject {
        string name;

        public Customer(Session session)
            : base(session) { }
        public Customer(Session session, string name)
            : this(session) {
            Name = name;
        }
        [Persistent("CustomerName")]
        public string Name { get { return name; } set { SetPropertyValue("Name", ref name, value); } }
        [Association("Customers-Orders")]
        public XPCollection<Order> Orders { get { return GetCollection<Order>("Orders"); } }
    }

    [Persistent("Orders")]
    public class Order : XPObject {
        SalesPerson salesPerson;
        Customer customer;
        DateTime date;

        public Order(Session session)
            : base(session) { }
        public Order(Session session, SalesPerson salesPerson, Customer customer, DateTime date)
            : this(session) {
            SalesPerson = salesPerson;
            Customer = customer;
            Date = date;
            salesPerson.Orders.Add(this);
            customer.Orders.Add(this);
        }
        [Association("SalesPeople-Orders")]
        public SalesPerson SalesPerson { get { return salesPerson; } set { SetPropertyValue("SalesPerson", ref salesPerson, value); } }
        [Association("Customers-Orders")]
        public Customer Customer { get { return customer; } set { SetPropertyValue("Customer", ref customer, value); } }
        [Association("Orders-Sales")]
        public XPCollection<Sale> Sales { get { return GetCollection<Sale>("Sales"); } }
        [Persistent("OrderDate")]
        public DateTime Date { get { return date; } set { SetPropertyValue("Date", ref date, value); } }
    }

    [Persistent("Categories")]
    public class Category : XPObject {
        string name;
        public Category(Session session)
            : base(session) { }
        public Category(Session session, string name)
            : this(session) {
            Name = name;
        }
        [Persistent("CategoryName")]
        public string Name { get { return name; } set { SetPropertyValue("Name", ref name, value); } }
        [Association("Category-Products")]
        public XPCollection<Product> Products { get { return GetCollection<Product>("Products"); } }
    }

    [Persistent("Products")]
    public class Product : XPObject {
        string name;
        Category category;
        decimal price;

        public Product(Session session)
            : base(session) { }
        public Product(Session session, string name, Category category, decimal price)
            : this(session) {
            Name = name;
            Category = category;
            Category.Products.Add(this);
            Price = price;
        }
        [Persistent("ProductName")]
        public string Name { get { return name; } set { SetPropertyValue("Name", ref name, value); } }
        [Association("Category-Products")]
        public Category Category { get { return category; } set { SetPropertyValue("Category", ref category, value); } }
        [Association("Product-Sales")]
        public XPCollection<Sale> Sales { get { return GetCollection<Sale>("Sales"); } }
        [NonPersistent]
        public decimal Price { get { return price; } set { price = value; } }
    }

    [Persistent("Sales")]
    public class Sale : XPObject {
        Order order;
        Product product;
        int quantity;
        decimal unitPrice;

        public Sale(Session session)
            : base(session) { }
        public Sale(Session session, Order order, Product product, int quantity, decimal unitPrice)
            : this(session) {
            Order = order;
            Product = product;
            Quantity = quantity;
            UnitPrice = unitPrice;
            order.Sales.Add(this);
            product.Sales.Add(this);
        }
        [Association("Orders-Sales")]
        public Order Order { get { return order; } set { SetPropertyValue("Order", ref order, value); } }
        [Association("Product-Sales")]
        public Product Product { get { return product; } set { SetPropertyValue("Product", ref product, value); } }
        [Persistent("Quantity")]
        public int Quantity { get { return quantity; } set { SetPropertyValue("Quantity", ref quantity, value); } }
        [Persistent("UnitPrice")]
        public decimal UnitPrice { get { return unitPrice; } set { SetPropertyValue("UnitPrice", ref unitPrice, value); } }
    }
    #endregion
}!xusing System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using DevExpress.Xpf.PivotGrid;
using System.Collections;

namespace PivotGridDemo.PivotGrid {
    public class FieldAreaHelper : DependencyObject {
        public static readonly DependencyProperty FixAreasProperty;

        static FieldAreaHelper() {
            FixAreasProperty = DependencyProperty.RegisterAttached("FixAreas", typeof(bool), typeof(FieldAreaHelper), new PropertyMetadata(OnFixAreasPropertyChanged));
        }

        public static bool GetFixAreas(DependencyObject element) {
            if(element == null || element as PivotGridControl == null)
                throw new ArgumentNullException("element");
            return (bool)((PivotGridControl)element).GetValue(FixAreasProperty);
        }

        public static void SetFixAreas(DependencyObject element, bool value) {
            if(element == null || element as PivotGridControl == null)
                throw new ArgumentNullException("element");
            element.SetValue(FixAreasProperty, value);
        }

        static void OnFixAreasPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) {
            PivotGridControl pivot = d as PivotGridControl;
            if(pivot == null) return;
            pivot.FieldAreaChanging += new PivotFieldAreaChangingEventHandler(OnPivotFieldAreaChanging);
        }

        static void OnPivotFieldAreaChanging(object sender, PivotFieldAreaChangingEventArgs e) {
            PivotGridField field = e.Field;
            if(field == null ||
                field.Parent as PivotGridControl == null ||
                ((PivotGridControl)field.Parent).OlapConnectionString != null ||
                      field.UnboundType != FieldUnboundColumnType.Bound)
                return;
            if(field.Area == FieldArea.DataArea) {
                if(e.NewArea != FieldArea.DataArea)
                    e.Allow = false;
            } else {
                if(e.NewArea == FieldArea.DataArea)
                    e.Allow = false;
            }
        }
    }
}!b�PNG


IHDR�a)IDATx^m�MHUo�W�JA�E�7��Z�&WDWI����ZE��EEpŖ��F�� j�Jąn)�"�J��@����;�u8���a��3��=E�������v305�]�Xͷ�UMI�d���y������
0̪Z��C/��}@����E$Fb0�F�,"	"d��(1F�z�|��xP�8����:vo�c�z�U�߉���_��ï�@�� ��Z`~)c5�H4�I�!�=�"+���lDu0��.�ɔT<Y^1�X�� �_?��PU��b
N�F�Z���/g��mտ���4�!���6�K7�PM��Oߗ�w�8�
�q�tң�u�q��Qe��L�A�&������[x��3�_^��%IR��6�<'F�ݧN��O�g҄�r�$M�*ʩ7�'`��	Ǿ�?�`���=Qypm����F8h��������_cf~L}yr���l������򨓨*��<F��R����k�����et���Wd��_�'�����Z�610<�կ����E%���\�͕�f���u
���� IEND�B`�!B�PNG


IHDR�a	IDATx^œ�KU]��z(�&B5�����>f�Bi�Ԡ@��q�� 

"�A4K�$!�Rd�W��I�1�0	IBLӛ�={��wm��ڛ�Zg���sN��le��⊞t��j����C�g�\D@���{�Ɨz��1�Օ�D1�w�vD�Q�ֳ<n&v^P�յu&�Z����ﳿ�V����!JmRe [Zΐ8G�u3a�u3�K�����=-�8W��8�qΑ$��֖�M<�s�@���e?MSu�0���R~��k�����](K���'·|����(ei%]����c��0�덝�<�{n^��9�=�"*:Q���k��(G�OY�[+�DT�fK+r��l���-������)�⃼��EMZCϿZ�J�ʣw3L-BIu
M�쮾B��
��(���)a�L=����A��$���tt
��7Ɨo?i��p� DL ���Bo\8���eS���!d�|����g�D��tz�*ŋ�[�Q���f+ۤx��ƿ��z9��IEND�B`�!��PNG


IHDR�a�IDATx^u�]HT[�g<Q�IJ��L�,��4Ʀ��	�(�z��"Рz1z����"?�A�2g��(J
53��fg��u���t5����~����c����P�\J	)(R��Y�Y�@(����W����X��i?����
"�(DY�d�W��!
�s�&�6�������0ɮ�{K@���ߡc?��m�AdUU/{u�L�����ZSp��d(N.��\H��O��z{X_vCL�O�22:MAv��-�$�%����k$�\(���w~o{
��0z���''=&g�H�s�/��s��0qh�;�G��8:R�p$X�O���
�t�I�n�&s��h&".�-�����}����<nKl��Ɓ��r�q Zp��Ok�Gpn�~�޿���j%�<%8^4�����Ht��\�`��38��Ş�o��+�4\Wx
6�
�⨱coe1��nJ��_�@Ez��$'���.$�d�C��ܭ/�246MAeI)���'���*i9%��Ӿ���
�F�p�#��B̅��E�P��A�JX8!����tb��2%$LC"}�r�[mBA@� "!�Q�l@�0�s!���Hş���`��,30�����Xb�yR*$zE���L��l8�@d����CVP�(�G�<%�X�/���f�;߷IEND�B`�!6�PNG


IHDR�a�IDATx^m�Ohe��ٝ���M����I#Vj�H{p%(��*�EDЃ�C�kA�K-��A,xH���*�P1���J��C��I[h�ͺ����d2�����^x�=<�g�a�W'_�c�X�vg��'\W>�*�xr�ԧR�g�����D]L�|������űѝ	WB��&�lV�ҕx`�N���~�����Z��!�'I�������"2ۢ4�};*�������y�A.?�`!�e���wk
ҙt����)��~�Oj\����Y|��wd%����U�9�2R�	��@�@t���o�噳'w���+v���vO�_�ڿ��x�ZHgS����&\'�戵[�)�0�Ԝi�t
6qz�P����U��"�]�Gq��-�4g+�l?��e��>~p�������v�ґ�	?*��[-n���忷E�`����Y,��Y�N�/���O2���r���U�kw6NN�͟x�0��:���ӧ�W6�x6���?�E����ɼ����t~�����a���t2���]��-��`��g*,/]ƪޡm���K����[5��T�1���rz|gaq̸�ūm=��M&��r��NLp�/�X!��s�w[s
K4�/MO����)�ͺ%i:�+�A�x�N����:͕�A�B<���wd�&7�m:�O����p���P1��>~YÓ��!!๢`J)g�?��@�k�1��]�E�,,U�A��2�7�b���T�IEND�B`�!��PNG


IHDR�a�IDATx^���KSa�O�M��E���_ԛzSf$����ͼ,E�tx�ۼ%
���l�5�
祕�f�K����bҋ$������l�=��,|x���C�-��~l�.�Ï��Ֆ����Z�TԠ����ȕ�A�V�l���E��R�+MHo�Cj}..֊�P�1DM��:�F0l����x�^x��7����r��t�g���Ѝ��L�@�H!��y�?����X���mУxK�˰�9a�;0>�*V��ACj��_B�.��n@�;j9&gM����킍�Wmk�X�XY�!��*�A����6��@��S�Ӹ�R��'Jh�����֩����1�	?,VĔ^�
��<Y9��!�g<�ř�Xd�@�}�s��O�/;���B�	yR8����x6�Ȉ#�I2OΙ�_)F��hU�P��yB8\o����\VG`Az��0��b�=^:�52e�É�Z5N%���K�{9��J����d|~Z���dސ��BY�gvbS�aw:�?-~A�F��f�z�w=|j�ĭ�3�>�_�H?:
=��t�ߴ��A[�H�{Z����*���x1�>*t�Ik�{�g�$"$Ir�P�E�|qN^��-��`�HϿf ��.B�@�@0� �,��}�܎[a���%�_��v�4�ߨك��{!��~���I�m����IEND�B`�!��PNG


IHDR22)�x�	pHYs���o�dPLTE�����Ɯ��BBBRRR���sssccc�����筭��������ƽ������sskRJJJJJ��������֭��������ƽ�����ﵵ��{{������ZZZ����{{{{{skkc���ccZ��{���kkk���skk���������RRJ���������|||991���!!!���������kcc���111��������ν��������fff>>>)))***���777������������{ss���������������������������¯������������aaa����ú����ʿ�Ⱦ�Ȣ�������ʺ�ij������999���|vv���������¾��������ZZR333������ZRR��̯��11)�Ȯ�������ȴ��������ˠ��ssc���{sk���JBB����Ӱ���������������������������{{������������ı��������;;;ooo����������%i�tRNS@��fhIDATx^Ֆc�$I�'"mEm{lkm۶m���uf��;���Ӟ�ߟs�u�$L�`�N?�ܭ���0�z���>���a7�|�`��{�@�z����=�d<0>q�kZo�#�
ŗ^�!�V];�1uKڰ��y{$q��J�H��CB��"���#��&0��E�m�}d�"�#z��O�,%^\t���}��kfI{v��2(�Ŗ�W�J�w"�Z���ev֟wS�噭����&�2[��E7��[+x����.ҹ�_9����#�K�,!�e��drA�O�}��t!�ҩ���b���f��� �0IӲr���xr��.u��Hd?AV�	��a^E7��.�)<Z�F�\��#Y�%��X9�鴚��P��']����"t��_4�$NheV����7�$�0��E(�R��J<�C�c���H!�M3R)��r��X��t0�!�G�g@��!Gc\R:e�I�E1�Lf�0�!�K�,co����	��X^��j.��|ѓ�j
EszpƖ�j�J�4�,��x}`]� HZA��(�4(�[�F�X�������xj�P�F����ѹz��u��UIZ�R���*��c2;�;���y��z�\Nb_�8�89x*g&�潜�bs��si������d�@ w*�7+N!��
�\��z^NVB�qLd�ṡ{�,1�|9iK��YE2t[酂�;��޼/"���;YGS��!��y��O�n��t�FW�
�D9^�|���\t,�
��_�r�4�60��M78n�[9���!��W_�v�I&�u�����e���O?��߅A���o��a~��Ͽ�6/���?����IEND�B`�!N�PNG


IHDR22)�x�	pHYs���o�dPLTE����������������������������������ƽ�����ֽ�������֥�����������ƽ���������������������������������������樂��ƽ�����������Ƶ��֟����Ό����ƪ�������ޢ�������������������ʛ�������盛������������������ƥ����穩���ġ����������������પ������������í��������������Ľ���������̵���ú��������ƽ��������ľ���������|||�����������ò���Ľ������������������������������������������������������Ѱ�������������ƨ������������ȿ�������ӵ�������×�������ȡ�������������������������������ͳ������������������ʺ�������������±�������������Ȱ�A�tRNS@��f�IDATx^���+��,m��غ4ƶm[϶m��?�v��;��w��W�۪J�O����N����S~���K?|�J~wp���A/wKݼ���`�ءwW_��A��S�3�{��'/�8�V�ΥA��\�4�Y�?}�Eđ��W=�I��6I�t?ILfB���.(�\��G�����4cL?*5YK���]�^@|�����L�6��J"%@�B�(%���6q�-�s3hۚ����&�"�����9�SU�ġ|�%3&!/�M��n\�h�hwMI��h���JD��S���'���IY���i�&jL{5�L�›�5/��\�f61F$��!掉�6���r��������\Y�%m�7����� �C�⑅����[�35��=K�;@�Zb���ǟ�#�T�C�F�>RG�fU^X�.5)�C��'���V�>�N�B��o�qLa;��O ��8�ɡ�'^���2)�`�=	B�$Aq'e����1����Oևe�\���(�CH1sL*&�
��kc�Ūzc}H>��!"a��q��t���;���*?~�,�$�A� ��p�={OнwL�W
�!x��Ϭ��Z+�^1l��ᦫ&j~L>�^�L
C��j�ֻE���k�hL?8&�Yh,�c��^��cO<�DxzL�UUoi�&iĎ��0���ic>4&�����lbIa@�t:��(��dJ��6Nf9�0
��)C�v('�nw$��Y���G�����hv�8	0鈊��u���+y:;�'�{%Ӡ��f�FpP|lLnݜs�ᬱ
���=xE@h?�1᝕�(��
P�= �
D�PC,@ŧx���\�#ll`�SS�u���ר�,��O�g���8�2S�3Ԡ��&͊��3���m̜+u>��L�D��W�$ 6�\k?��0��!M	��.c�ۑ���n��᪛��e�'DQ���%�-��MO�-�<�2H��~�|��(*��k`{��2_[���e�<�\�YG�b���7Z��Z/u��5�R�U�,DVG����[�[�s��ٳe���W,�F�w���s�N�ײ.�
�6�բZ�"��M���nvYV,d)�VX�]�܏��.��~�6��,C�,�r��u7���Es��1�s΄f��eA�_^���;�׿��|��ߜ�<ow{��~��ֻ���_����W���?���p�&�3�$���KIEND�B`�!��PNG


IHDR22)�x�	pHYs���o�dPLTE��������Ɯ�������{{{ZZZ���������ƽ����������sss���������{{s����������������{BBBccckkk999ssk��Ό�����RRR����ƽ��֥��ƽ�kkcRJJ���|||����{{���ZZR{ss������ss{����������{������������***���fff!!!>>>777JJJJBB������Ą�������skk������������11)��������頠����111���kcc))!������|v|�����׹�������͋�����JJB���33+���������)))�ſ�����������һ�����BB9�����������٤����������ܵ����М������������������������赭�������ה�������cZc�������������������������������Ȼ��������������ooo;;;�:�tRNS@��f\IDATx^Ֆ��H���i����6��m۶��r�o�L.:��}���>�_�S�$�_A�_��ᡃ�v�)���S�߉e�(<�
�;v,Y8vϩI��|�~3w���n�?�eMJ�h�'���c�c�G�:ֲY�7M�o�6���������Ǧ$;ݮ�+mV�׍0�VG�ex�rWxn���r�6�'��Լ��EQ4��!n�����A����$,�,�v�۱9�+w����z[Ϊ��H�ۿ��.�h��@U͊ӹ���F0����Vt�VU����(K��
5}PMs	A�N)��,7p��u�x	J57$�ļ�����oh	}�2Ų3]�:���4�.��>�S�p����Q�ҡ�(XS��щe�\n�`�/r�*OM�i� @
U�/��#C�i���(! n�TY�3�z�R*�m*

��ά���-u{�e�P�v�pg�q�9c��Sv_V�R�6Q�Y�����)�.+ TC��8;�=���*�(ڋ��Bl۟�,�Q���B��5�V��Xʼ�s�a��,��H��ʫ�VVU�LI���]EJ�����JX^��K�uy�+�"Ē��XR��S�f��5�Ӑ���Z�'��ۧi_G6
}S��fE�^J�����ښ���!��A�C\��hZ�vϑ��MI#%�Uf�[��u��
�+����y��P#�^�&��y^H�0�AHj�iNJY~����I">��9!��z�>^ҧe��|�*+&˲x<i&G|@p��Y�K��I�?�/	�=�\W�ʧ����T�WV&�,f��XķߡV˃p=ˉ�]�?"˔pu��K��?�|
�٘��/��&U������~��Ͽ��'�����/�v�ږR��IEND�B`�!��PNG


IHDR22)�x�	pHYs���o�dHPLTE|||���>>>���ccc777!!!fffJJJ***��������ĸ���������������tRNS@��f�IDATx^͖G�0#�n:��i^6�����j~��̥V-�
-y�zfh�a��0:OG��B��XW1�H5�pjL���ĘW�b��c��9�ݑ��t�wc��V04)aSSGm�O_�F��L�l�iVL.
�vxQ$�Ȣh@�E�"�b�E�*�(��(x.���u�������<�J|��
��1|[�;��}��~+��}�w��a��7#
�6_�IEND�B`�!�PNG


IHDR22)�x�	pHYs���o�d�PLTEkkk���ccc���JJJ���sssBBB���{{s���������ZZRkkckcc999{{{������>>>RRR|||!!!���911ƽ�������cZZ������JJBZRR���{������***)))fff777ssk��������ʜ�����BB9�����ٌ��ZZZ���{ss��������������������ࠠ�������������������d]]�ȼ����̺����������������;���uu}�����񿿹skk��𦦦��癙�RRJ���������ccZ�����������޽���������׵�������������������������ϭ�������Ä���ʹ������kks��Ϲ���{{�������͵��uuu��Ϫ��qqk��Ơ��hhc�5�tRNS@��f�IDATx^ՖS�$1�;hc[�6ֶm۶���!U��73����~�_%9'¿�O�T67�˦p2�f3�Ƞ����pa���adhl[�yv��f0��clX�a�B���85��y�f`�@��.:�N�~���bN�g��s��
OJ���l٤�c�B�y;d�J"	!�e�[/��d�2�U�ú��J�[3�m4�%�^4Ck��YWJ-,�{E�fe�,���D�(uј��Q'�~���^I�DQ�D9ک�n#���r�#��I�QN�<��r%K�3�l	�R$%G�sE�B�I'JS��R/h<�\4-�9O,��
�lh2G�.�J�p�	��\�VT�J����o�TZX��[�����Nn��2�u��"ܙ���*�{�]s<o_��@�8'��Pk�e�9&<z,�S�癖“��J1�L�����Z�d�͛i�V
�b4���ە4?�A�F������4߾��~LV~��M�a����E�m�ZyIEND�B`�!��PNG


IHDR22)�x�	pHYs���o�d:PLTE����������������������������ƽ�����ֽ�������ޥ�����ccc��޵�������έ�������������έ���������޽����{������ZZZ���JJJ���kkcsss������ssk������ƽ�kkk!!!BBB���111���{{s���{{{skk��ƭ������������Ƶ��ֵ�����RRR���|||���fff***������999�ν{ss�{{���ZZR���ƽ���������ю��������������777===>>>������lll���rrrJBJ��������������ƽ���wwwzzz�ſ��������͚��cZZ���)))����Ŀ|vv������{������γ������������������kks��991��ܛ����������������B99�����BB9������RJJ�����������������������������������������������ss{������������Ƚ������������������������H�.tRNS@��fIDATx^͖c�$I�']6ڶ��;���m۶m�m���ܙ~�=���*�5��r�?|�K�-W\u��_�!wv�G�Y�дRlD����K�o93�����ͭ�tɛ�m�t��mOv�S)���j&&%%o�2�ظ~�i�˯TU�*3&�Z�k*�X2�y����D�S�>�� xi���̸�LfD�k���瞂x�A�a�����x %ϸ��H5��O$λ�$��!"y�����<D�`���Ncp8��}����z=��Y��1�Y�8>���Ù��|�I�"��rV5�(�|A��*J��i��	�Z�nGB��'5��qˬ�(���4���Zq"��81��,���b6�;�����v�"�ha����*�6c�NǮ��M���D�mO03�`�,��Xr�9�ɵuu�������GT6!k��&/�<�]adDz9��y�����;�)���y���)z�Jm{�\��G�Ȳ0����m"��N�1�g�5��dӮ���l�ǀ��-rD�q��Ġ8MZ�,�K#�޸�o���"��inb�M��=��F���|��(#��J��!�48��H>M�35�d�5�Z���0�KC$(.	~�զt1�-���]�1_^�c%��G3��
�`@�8Ig	��l��*D�\�֭�F����ȅ+H �P�g�T��"�Rd!9�-��R�$5W\�?� ��)ϠI:�	uH���|�����b��� �&u
(�t� LAT�,wc��osq��B$`��8�H�@H�w2��d�uuI��![�؋PJ“0���2����2�,�"}y�۔Ip��H�s������JQ����
G�lE��6�2�faN*z���Ȍ��!�u!�
5N�L7Ç�S�L�#"Dp�6��M�X�uSW$e�m����7�S�1΂U��:���)���7����-�<�sc�[A�`A�ʘc����|{{��y�s(�D�[��93�K�Tlr���n� �_5�S0�b?hɘ����d��EWн�e`�)�Ҙ���׫�2H���}PG�Y�d��I�2��Q}�� tp*%k�]j�;V_��>�T���7.����q0�
��ԩ��g�@�ÈA �tk�iՙ�Ⱥ�Jd�E��W7��jy`&vtWF��7�!�‡2_����Ⱥ�}����w�R)'�k��J�����Ï?���Z5�T�uq6���_���uJ��O���NM�IEND�B`�!��PNG


IHDR22)�x�	pHYs���o�d�PLTEccc���JJJkkk���RRR���!!!BBB������sss���{{{�����ν�����ZZZ)))������|||������>>>���111999�����{kcc���***���fff���777���kkc�ƽ������11)���{{s���{{���������������}}}������������������������������ƺ��Ĕ�����ų���]]]��ľ������ڴ�ĦJJB�ظ�Ȼ������������ǻRJJ�������´����ƾ�����������ֿ���ֵ�������ۿ��ֿ�����))��������å�������©��ss{�������������᫫����qqq������hhc���Nl��tRNS@��f�IDATx^ՖŒ#1@cnfs�a������|kˇLv:��ik��,ɖ��Wĥ\Q��e��gKq���0�֡;yp��yd��ֶ���/T�h#�z����DQmͲw�K4��dt���	��vԏH8��1��eY�wCh���r�@o�(��2H�HO�
h0��x�~]���}�u�ͮ2�Ҩa�P��ޫ�T%K\�W�f�D������$C�h�ŽK��2P��\:,��,J
/pbzG���(Qhu�`�T*YU�f1�:%5��%b�w�R΢�e��T���e�
�>$���Lÿ�E�xa�x� �-���.��^�l�`�:����4n���w����[|��Mn޽g/��:�??x�j�؊��!���Q����@&L����c�(#�7��u��y4���2�5l�z��/s� koA[L���/Cv%�����G?}�/ð�ŷ�?@�������o=7>ώSHIEND�B`�!u�PNG


IHDR22)�x�	pHYs���o�d:PLTE���������������������便�����������ƽ��֜�����ccc�����sss�������ƽ��ε����������Δ����{�����������ssk���{{{���kkk�����ν�������έ��111!!!RRRBBB���cZZJJJ������999���skk����Ƶ������{ss|||������fff���***���{{s�{{ƽ�������������kkc�����{���kck��魥�RRJ������ZZR������JJB��ť���������񾾾���777DDD������������>>>����¾lll��񠚚����Ⱦ������{s{woo������jjj������ij�¯�������ΰ������Ȣ{{�����Ȯ�����{sk�����ſ�����vvv����ȴ����������ʺ���������������)))��������������ÿ���������¿���������������ZZZ�����Ľ�������ӆ���������������������ź�����ͫ�;tRNS@��f�IDATx^Ֆ�$IǷд1��l�m[g۶m�6����~���a�~����AL}"+�����V_u��;��P��X]�0p��K��JJӅܪ&�������֬���IM����1�X����V�O�v9�r�`lcU��W_�q�P"�3hWʭ�E?!lIU� t�=KWlH$z�D���a�Q�(R"�T�{�_����DbxȘ͖q�U9WQ)��2bo�u� c�D6�����V%ϵ�:B�E��[� z�j��~��K��3Ȗ��g���z�VC@��Mٌ�9L�(�W�{��My>F��ե��D�d��٤�qC��Ba}��SG�=:?��C�^*e3�5���+N1���J�*)"��rYW�A 3��k���#TjlQ��j�iKl������Z  ]o�a{�Q|"˒��E�(E12�`W$��Z%#��z�lwF\�J2�Xj�ڔ��o�(\�njrRf2��g�CM�dy�(IdT²3�bdu"����	-���l��`�RO�$������Gb���|,�M
P-��>�*�G1���(F�=#F���J)�#���j1�U�(���1ru�LVf� ���-�Ax�c1�T��F�Рa<�ˉCT1��]/�Q7�N��5���R�ޝ�:��'uF�YL]u��y>BƌZ);�;�_0E��Iy�����{�^�gZK�I��$c��ğEX����9`oJ	P̱�aݼ/Q*��������|�z�`�dtMQb��W��Ì������g�vz:�hQ���X*L1�!����g��X-%hu�#��9eY�:����إi�ZzRtq�y�p�
��<k���U�vysYЁ��(#�<�*�n��4��ㅅ��i6A�<u�z���Plo,�ʾ��R+#��
<��[���qܕov��p�N���
��������B$�A����f���5�4	��HyR�*��6��wαw�ͦ�����DhoJ�S�T
w���i�o�)!^���U<��eP��uK��AZyLQT	�#Ah9��Ï���Йe
�p �k���
S2����K_
�d�0jb�ő��,s�Egk.hr�*0s���g˟���K�\������&0��G�"�`h7`�-��&&_~����o�I
�	�PZ�}�~w����J*�M
�=����u�����/�_���?��{���F����IEND�B`�!#�PNG


IHDR00W���IDATx^�ylUe�ǿ��K{�х.��@�LiY�
�0���&D�
�"�l���c&8��щ��f�8�83$��3�a�@6dkii{�s�9g�Ϲ��6X�?
.ɜ��}�=�>��>��V1?�ˁ���"P�z��=��/Y�N��+D��7��v6o�|��ϟo����fee�
�]���y���g֯_����"��s�Z�ʕ+�Ol�~������Wh�0M� 8�梢��?����ĪU��
6�6}�G����E~�1>�[׿���P聎���c�=�S�����lz��'���ޞ�J�L��lelѢEwmܸ�uIUU�r����J떼O&��})
�a�]��gV�7�]�v]zꩧF�A,X�@�lll�`�4
//�Ǹ1Հ�¿><�Ϗ�eL[���gQ���H$��	X�p��:3f���|ki<=����ؑ�(�?1Q�'�#��:�G���C��nڴ)�t�R㇊��ɓ'/��!iIX�� k�*�X��O������
x��(h�L��oo�ŋ��_�zu���]lOT���G�#JRi���X�=�N��΂1c�}��ݟ�����y��;
qUVV6�;Ex4�@ð0J��@�
��FUQV������.ю������h[�l�fϞm|/��f�pU�f�/���}�ω��R@��=�����hDŽ�����h���J���,d*�e����茎�}������iSH��1jx5J�����B���+P�V���a%��A(�.�*`�(Im۶͘6m�q]#�|�r�k֬ip�����$�/�J)͏7�ڇm�wCUS��X�����b��"|��Q\��NR�\s���^:p�.+
�N!q������v婯+G���X�_���8x�O1�<M���>�;�[�_�ӡ�������$w�ءO�4ɸjb�7]+V�0Sg�ڵ��sw���ۉ񣫁T'`8�o�I���Rh`z�h�14�X��s�qk)�z�0:"*]���Emm�Ç�)&D�Q횟�h�Y6����P�_tEb5�
����
F�4��}��(q�B'j��p��rtv&d\���etJH���ꐹ�}J!��Y�o勚(���"/7��S�t�Q�(�HZɊ��̱B�9�q-Ŷ��b��~|�U'\NCN�����iǏ�*^سg����`\�*��ʜ������1��&1lh
��x�hgZT���̲
8��%TU�dqK�vT��1uB1^�s+����W2�ޣh	e��0��pϲe����<*���������>�|h��w������e@��T輀9S*��~�;�)=���xf����ӛ$
L4��S�v��~SSS������59yn A�=-������|||�
�QrI
�U
�j���0�����
7 �fi����
�>G���/)dz��8�y:\r[R"��?a|�Uyt��"�ŸC�|��m4;10\JQWb<�J��:�����ko�p�R�NPKwS������
��KEDr�YJ�?d��h$��c� 7ϙ�(RDK��Ts+QY�C�:g�U����Xz���H
#�s�����Mا7)����U�ǩS��N#�?��;z��%��h,����jF��p]ZbEA�����^��A@뤀v a�]Ѐ�Y̜���p6E��^I�N�_�!b���x�'d�=}��!<�< �یl�FA�_�o���$b�*�#��E�"�]@�P/�Za�%�D�PQ܂Y���@d��gq�W @����J��p�X����,g_���yA~��?Ht��G*�A`y6Ev���=Ma(D�`�D�$MZ��O�&/�˳�PMbG.'�"y�K�ޤ��B<3g��	5���u'����H���-R4I��
/E]M���x��9�"�0W�~Y���2`g�,nM\4��"�X,�|��u�֙�xXy�����$��r1n�@@�`�MXD�&�+�u̙Z�����'m��n	��(N r�&qCU6ߕ�(��̅;
����yyP����b�J$|�&�#��Z�}�"�LuyK�ᅝX��;X�n/��ĝ�)�mM`͞/�#0����YUք��	}E� D\
�o�7ɢ����tٌ���cGTɈml&�d������/�Ʊ/;q�T'~�����s�t�F�6
���7�1���,�v*�,!��O�$���>��`n�%C~�:�\``��v#]�瀮}��@�<r:��0�"bȿ?mRb��z� M��Ǒj��a�M3# pɵ���i%V��J�_���"�7s?��DWz��	
J��g�����Tr�0�,�X"	�I��ې���RG��5�,pm��|�Hlښ�}�/�#N2��O:��8�������h�D�/
��q��Rx�\���4��I�$�1���{(�������S)���.�B�{>�WX1��~c
�Bn'_�(����&�ǻ��w
+�惺�)��L�Li
���_��l���+�x�.��^(��@����F2�Z'*J�{*�ͤ���#��Շu�ARǎ����V�����%If�%a�GQq�0o:�	�S��"@�x������k��2[��d���K�q����0��I�دS��Y"�X}9��D�y�FԺ7�/��-�#ƴ�석>l�{�N)�?eFY Z.�q�vfLZT�tI�>��2��g�@@�����шqe
i$�곙��荀��5
nd_#��}"Lʜ	����<�����~
�<B�뽼�U�FR=E@'����prz#QC^ۓ���
/�v+ڭ=.�6��ӬjU���Wl�����\��3/Y_�w�O����3�2now#�e|��GOt'I�A��{D���U�� �Ƭ�=	�n���k�A�1<��٣��O����߲|TIEND�B`�!%MSBAML```����IEPivotGridDemo, Version=13.1.4.0, Culture=neutral, PublicKeyToken=nullA%clr-namespace:PivotGridDemo.PivotGridPivotGridDemo.PivotGrid'!PivotGridDemo.PivotGrid.AsyncMode\XPresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNWindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35WSPresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35D9http://schemas.microsoft.com/winfx/2006/xaml/presentationRNSystem.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:x,http://schemas.microsoft.com/winfx/2006/xaml7local%clr-namespace:PivotGridDemo.PivotGridfbDevExpress.Xpf.PivotGrid.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aBdxpg7http://schemas.devexpress.com/winfx/2008/xaml/pivotgrida]DevExpress.Xpf.Core.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a?dxe5http://schemas.devexpress.com/winfx/2008/xaml/editors;dx2http://schemas.devexpress.com/winfx/2008/xaml/coreeaDevExpress.Xpf.DemoBase.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aAdxdb6http://schemas.devexpress.com/winfx/2008/xaml/demobased`DevExpress.Xpf.Docking.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aQdxdoveDhttp://schemas.devexpress.com/winfx/2008/xaml/docking/visualelements1+PivotGridDemo.PivotGrid.PivotGridDemoModule
Loaded$ PivotGridDemoModule_Loaded��$	�300��$	�400��.�/)DevExpress.Xpf.DemoBase.DemoModuleControl-Name$
moduleControl��OptionsContent����Orientation$Vertical=�.+�$DevExpress.Xpf.Core.GroupFrame$��Data Source:��$
�0,0,0,8q�$�77��$	�182��.���$Vertical=�.+�	�-$�
radioOlapCube��$�	OLAP Cube��	�	GroupName$
grpDataSource��$
�0,0,0,4q�	�-$�radioTableDataSource��$�Table Data Source��$
grpDataSource���-$�btnGenerateTableData��$�Generate Table Data��$�23��$	�155��Content.��RowDefinitions�$
��Auto��$��*��ColumnDefinitions��$	�69*���$�12���$	�31*�.+���$��0�$�3�.+���-��Name$tbOlap��$
��Wrap=�$
�6,6,6,0q�
�����$y�	Collapsed=�kiTo connect to olap cubes, you should have Microsoft SQL Server 2005 Analysis Services 9.0 OLE DB Provider��RPinstalled on your system. You can get the latest version of this provider here: �-$k��ehttp://www.microsoft.com/downloads/details.aspx?FamilyID=50b97994-8453-4998-8226-fa42ec403d17#ASOLEDB?�.�www.microsoft.com/)DevExpress.Xpf.PivotGrid.PivotGridControl-	Name$		pivotGrid��-'PivotGridDemo.PivotGrid.FieldAreaHelper
FixAreas
.$��1�$�0�RowTreeWidth$	155�$
�Stretch=�$
�Left=�
ShowBorder.
UseAsyncMode
.ColumnTotalsLocation$
Near=�$�
12,12,0,12q�FieldListSplitterY$	200Q�FieldListStyle$	Excel2007=�DataFieldWidth$80Q�
RowTreeOffset$20�AllowCustomizationForm.ShowFilterHeaders.ShowDataHeaders.ShowColumnHeaders.ShowRowHeaders.��$��1�$�1�$
�Stretch=������
TargetType"��.R�;5DevExpress.Xpf.Docking.VisualElements.SplitterControl<6DevExpress.Xpf.Docking.VisualElements.BaseSplitterItemOrientation$
Horizontal=�93DevExpress.Xpf.PivotGrid.PivotExcelFieldListControl-Name$	fieldList��$��1�$�2�$
�Stretch=�$	�200��$�
0,12,12,12q�2	,DevExpress.Xpf.Core.ColumnChooserControlBase	Owner��ElementName$	pivotGrid��!�<local:PivotGridDemoModule x:Class="PivotGridDemo.PivotGrid.AsyncMode"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:PivotGridDemo.PivotGrid"
    xmlns:dxpg="http://schemas.devexpress.com/winfx/2008/xaml/pivotgrid"
    xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
    xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
    xmlns:dxdb="http://schemas.devexpress.com/winfx/2008/xaml/demobase"
    xmlns:dxdove="http://schemas.devexpress.com/winfx/2008/xaml/docking/visualelements"
    Height="300" Width="400"
    Loaded="PivotGridDemoModule_Loaded">

    <dxdb:DemoModuleControl x:Name="moduleControl">
        <dxdb:DemoModuleControl.OptionsContent>
            <StackPanel Orientation="Vertical">
                <dx:GroupFrame Header="Data Source:" Margin="0,0,0,8" Height="77" MinWidth="182">
                    <StackPanel Orientation="Vertical" >
                        <RadioButton Content="OLAP Cube" GroupName="grpDataSource" Name="radioOlapCube" Checked="radioOlapCube_Checked" Margin="0,0,0,4" />
                        <RadioButton Content="Table Data Source" GroupName="grpDataSource" Name="radioTableDataSource" Checked="radioTableDataSource_Checked" />
                    </StackPanel>
                </dx:GroupFrame>
                <Button Content="Generate Table Data" Height="23" Name="btnGenerateTableData" MinWidth="155" Click="btnGenerateTableData_Click" />
            </StackPanel>
        </dxdb:DemoModuleControl.OptionsContent>
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto" />
                <RowDefinition Height="*" />
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="69*" />
                <ColumnDefinition Width="12"/>
                <ColumnDefinition Width="31*" />
            </Grid.ColumnDefinitions>
            <StackPanel Grid.Row="0" Grid.ColumnSpan="3">
                <TextBlock x:Name="tbOlap" TextWrapping="Wrap" Margin="6,6,6,0" Foreground="Red" Visibility="Collapsed">
                    To connect to olap cubes, you should have Microsoft SQL Server 2005 Analysis Services 9.0 OLE DB Provider
                    <LineBreak />installed on your system. You can get the latest version of this provider here:
                    <Hyperlink NavigateUri="http://www.microsoft.com/downloads/details.aspx?FamilyID=50b97994-8453-4998-8226-fa42ec403d17#ASOLEDB" RequestNavigate="HyperlinkOlap_RequestNavigate">
                        www.microsoft.com
                    </Hyperlink>
                </TextBlock>
            </StackPanel>
            <dxpg:PivotGridControl local:FieldAreaHelper.FixAreas="True" Grid.Row="1" Grid.Column="0" x:Name="pivotGrid" RowTreeWidth="155" OlapException="OnPivotGridOlapException"
                                   VerticalAlignment="Stretch" HorizontalAlignment="Left" ShowBorder="True" UseAsyncMode="True" SizeChanged="OnPivotGridSizeChanged"
                CellDoubleClick="pivotGrid_CellDoubleClick" ColumnTotalsLocation="Near" Margin="12,12,0,12" FieldListSplitterY="200"
                FieldListStyle="Excel2007" DataFieldWidth="80" RowTreeOffset="20" AllowCustomizationForm="False"
                ShowFilterHeaders="False" ShowDataHeaders="False" ShowColumnHeaders="False" ShowRowHeaders="False"
                AsyncOperationCompleted="pivotGrid_AsyncOperationCompleted" AsyncOperationStarting="pivotGrid_AsyncOperationStarting" />
            <GridSplitter Grid.Row="1" Grid.Column="1" HorizontalAlignment="Stretch">
                <GridSplitter.Template>
                    <ControlTemplate TargetType="{x:Type Control}">
                        <dxdove:SplitterControl Orientation="Horizontal" />
                    </ControlTemplate>
                </GridSplitter.Template>
            </GridSplitter>
            <dxpg:PivotExcelFieldListControl Grid.Row="1" Grid.Column="2" x:Name="fieldList" Owner="{Binding ElementName=pivotGrid}" HorizontalAlignment="Stretch" MinWidth="200"
                                             Margin="0,12,12,12" />
        </Grid>
    </dxdb:DemoModuleControl>
</local:PivotGridDemoModule>!�using System;
using System.Windows;
using DevExpress.Xpf.Core;
using DevExpress.Xpf.Grid;
using DevExpress.Xpf.PivotGrid;
using PivotGridDemo.PivotGrid.Helpers;
using System.Diagnostics;

namespace PivotGridDemo.PivotGrid {
    public partial class AsyncMode : PivotGridDemoModule {
        const string TableConnectError = "A connection error occurred. Please make sure that you have generated a data source and provided proper connection settings.";
        const string OlapConnectError = "A connection error occurred. Please make sure that you have provided proper connection settings.\nTo connect to OLAP cubes, you should have Microsoft SQL Server 2005 Analysis Services 9.0 OLE DB provider installed on your system.";
        bool isDataBaseGeneratorRunned = false;
        InitializerDataSource currentDataSource;
        double lastSplitterY = 200;

        public AsyncMode() {
            InitializeComponent();
        }
        void PivotGridDemoModule_Loaded(object sender, RoutedEventArgs e) {
            ServerParameters.LoadParameters();
            radioOlapCube.IsChecked = true;
        }
        void pivotGrid_AsyncOperationCompleted(object sender, RoutedEventArgs e) {
            EnableControls();
        }
        void pivotGrid_AsyncOperationStarting(object sender, RoutedEventArgs e) {
            DisableControls();
        }
        void btnGenerateTableData_Click(object sender, RoutedEventArgs e) {
            RunDBGenerator("Return to Demo");
        }
        void RunDBGenerator(string demoString) {
            WindowDatabaseGenerator windowDBGenerator = new WindowDatabaseGenerator(this, demoString);
            bool? cancelInitialization = windowDBGenerator.ShowDialog();
            if(cancelInitialization == false && radioTableDataSource.IsChecked.Value) {
                DisableControls();
                isDataBaseGeneratorRunned = true;
                Initialize(InitializerDataSource.TableDataSource);
            }
        }
        void radioOlapCube_Checked(object sender, RoutedEventArgs e) {
            DisableControls();
            Initialize(InitializerDataSource.OlapCube);
        }
        void radioTableDataSource_Checked(object sender, RoutedEventArgs e) {
            DisableControls();
            if(isDataBaseGeneratorRunned)
                Initialize(InitializerDataSource.TableDataSource);
            else {
                RunDBGenerator("Start Demo");
                EnableControls();
            }
        }
        void Initialize(InitializerDataSource dataSourceType) {
            currentDataSource = dataSourceType;
            AsynchronousPivotInitializer.Initialize(pivotGrid, ProcessAsyncResult, currentDataSource);
        }
        void DisableControls() {
            radioTableDataSource.IsEnabled = false;
            radioOlapCube.IsEnabled = false;
            btnGenerateTableData.IsEnabled = false;
            DispatcherHelper.DoEvents();
        }
        void EnableControls() {
            radioTableDataSource.IsEnabled = true;
            radioOlapCube.IsEnabled = true;
            btnGenerateTableData.IsEnabled = true;
        }
        void ShowErrorInfo() {
            if(currentDataSource == InitializerDataSource.OlapCube) {
                tbOlap.Visibility = System.Windows.Visibility.Visible;
                DXMessageBox.Show(OlapConnectError, "Could not connect to OLAP cube", MessageBoxButton.OK, MessageBoxImage.Error);
            } else
                DXMessageBox.Show(TableConnectError, "Could not connect to data source", MessageBoxButton.OK, MessageBoxImage.Error);
        }
        void ProcessAsyncResult(AsyncOperationResult result) {
            if(result == null) {
                if(currentDataSource == InitializerDataSource.OlapCube || isDataBaseGeneratorRunned)
                    ShowErrorInfo();
                else
                    RunDBGenerator("Start Demo");
            }
            EnableControls();
        }
        void pivotGrid_CellDoubleClick(object sender, PivotCellEventArgs e) {
            AsyncCompletedHandler showDrillDown = delegate(AsyncOperationResult result) {
                try {
                    if(result.Exception != null)
                        DXMessageBox.Show(result.Exception.Message);
                    else
                        ShowDrillDown((PivotDrillDownDataSource)result.Value);
                } catch(Exception ex) {
                    DXMessageBox.Show(ex.Message);
                }
            };
            pivotGrid.CreateDrillDownDataSourceAsync(e.ColumnIndex, e.RowIndex, showDrillDown);
        }
        void ShowDrillDown(PivotDrillDownDataSource drillDownDataSource) {
            if(drillDownDataSource.RowCount == 0) {
                DXMessageBox.Show("DrillDown operation returned no rows");
                return;
            }
            GridControl grid = new GridControl();
            grid.View = new TableView() { AllowPerPixelScrolling = true };
            grid.ItemsSource = drillDownDataSource;
            grid.AutoGeneratedColumns += grid_ColumnsPopulated;
            grid.PopulateColumns();

            FloatingContainer popupContainer = FloatingWindowContainer.ShowDialog(grid, this, new Size(520, 300),
             new FloatingContainerParameters() {
                 AllowSizing = true,
                 CloseOnEscape = true,
                 Title = String.Format("Drill Down Results: {0} Rows", drillDownDataSource.RowCount),
                 ClosedDelegate = null,
             });
            AddLogicalChild(popupContainer);
        }
        void grid_ColumnsPopulated(object sender, RoutedEventArgs e) {
            GridControl grid = (GridControl)sender;
            for(int i = 0; i < grid.Columns.Count; i++) {
                GridColumn column = grid.Columns[i];
                column.Header = GetHeaderText((string)column.FieldName);
            }
        }
        string GetHeaderText(string drilldownColumnName) {
            for(int i = 0; i < pivotGrid.Fields.Count; i++) {
                PivotGridField field = pivotGrid.Fields[i];
                string fieldDrillDownColumnName = !string.IsNullOrEmpty(pivotGrid.OlapConnectionString) ? field.OlapDrillDownColumnName : field.ExpressionFieldName;
                if(fieldDrillDownColumnName == drilldownColumnName)
                    return !string.IsNullOrEmpty(field.Caption) ? field.Caption : fieldDrillDownColumnName;
            }
            return drilldownColumnName;
        }
        void HyperlinkOlap_RequestNavigate(object sender, System.Windows.Navigation.RequestNavigateEventArgs e) {
            Process.Start(new ProcessStartInfo(e.Uri.AbsoluteUri));
            e.Handled = true;
        }

        void OnPivotGridSizeChanged(object sender, SizeChangedEventArgs e) {
            PivotGridControl pivot = sender as PivotGridControl;
            if(pivot == null || pivot.RenderSize.Height < 200 || lastSplitterY != pivot.FieldListSplitterY)
                return;
            pivot.FieldListSplitterY = Math.Round((pivot.RenderSize.Height - 90) * 0.5);
            lastSplitterY = pivot.FieldListSplitterY;
        }

        void OnPivotGridOlapException(object sender, PivotOlapExceptionEventArgs e) {
            e.Handled = true;
        }
    }
}!tMSBAML```����OKmscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0891&clr-namespace:System;assembly=mscorlibSystemI2clr-namespace:System.Collections;assembly=mscorlibSystem.CollectionsIEPivotGridDemo, Version=13.1.4.0, Culture=neutral, PublicKeyToken=nullA%clr-namespace:PivotGridDemo.PivotGridPivotGridDemo.PivotGrid+%PivotGridDemo.PivotGrid.CellTemplates\XPresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNWindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35WSPresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35D9http://schemas.microsoft.com/winfx/2006/xaml/presentationRNSystem.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:x,http://schemas.microsoft.com/winfx/2006/xaml6sys&clr-namespace:System;assembly=mscorlibJcollections2clr-namespace:System.Collections;assembly=mscorlib7local%clr-namespace:PivotGridDemo.PivotGridfbDevExpress.Xpf.PivotGrid.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aBdxpg7http://schemas.devexpress.com/winfx/2008/xaml/pivotgrida]DevExpress.Xpf.Core.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a?dxe5http://schemas.devexpress.com/winfx/2008/xaml/editors;dx2http://schemas.devexpress.com/winfx/2008/xaml/coreeaDevExpress.Xpf.DemoBase.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aAdxdb6http://schemas.devexpress.com/winfx/2008/xaml/demobase�	Resources
�MergedDictionaries
�Source3-DevExpress.Xpf.Core.BoolToVisibilityConverter BoolToVisibilityConverter CellTemplate�Name InplaceProgressBarTemplate^�ToolTip�Maximum�Path�Mode�	Converter,&PivotGridDemo.PivotGrid.RoundConverter	�Value
�CornerRadius�RelativeSource��AncestorType
��
TextAlignment��Orientation��$MG/PivotGridDemo;component/Controls/ControlStyles/InplaceProgressBar.xaml?�%�&	&	77��.R��.+��$	cellShare��8�$
�Stretch=�$
�2,1,2,1q�$%Share in product category sales���$
RowTotalValue�$OneWay=�	�$Value�$OneWay=��$�	cellValue�����	#1F000000$��1q�$�Center=�$�Center=����	#FFFFFFFF$
2,2,2,2��y��$IsCellValueVisible���*FindAncestor+$local:PivotGridDemoModuleL�8._���$
Center=�$��NoWrap=�$�	5,-2,5,-2q�
����$�Center=�$�Center=����*
DisplayText+��$
Horizontal=�.+���$
�0,0,2,0q�
Sales of��$��	UltraBold"�$
�0,0,2,0q����*RowValueDisplayText+��$
�0,0,2,0q�in��$��	UltraBold"����*ColumnValueDisplayText+.�/)DevExpress.Xpf.DemoBase.DemoModuleControlOptionsContent��$Vertical=�.+�$DevExpress.Xpf.Core.GroupFrame$��Template��.�("DevExpress.Xpf.Editors.ListBoxEdit-Name$
templatesList��%DevExpress.Xpf.Editors.BaseEdit
ShowBorder.
SelectedIndex$2��Z�
StyleSettings:4DevExpress.Xpf.Editors.RadioListBoxEditStyleSettingsItems��None����
Share Only����Value and Share��Content./)DevExpress.Xpf.PivotGrid.PivotGridControl-Name$	pivotGrid��-	'PivotGridDemo.PivotGrid.FieldAreaHelper	FixAreas.RowTreeWidth$	200�
ShowBorder.
Fields-
'DevExpress.Xpf.PivotGrid.PivotGridField
-
Name$
fieldCategory��
	FieldName$CategoryName��
Area$
RowArea=�
Width$	100Q�
Caption$Category��
-$fieldProduct��$ProductName��$
RowArea=�$	200Q�$
Product��
-$
fieldSales��$ProductSales��$DataArea=�$	200Q�$Sales�� 
CellTemplate# [
-$	fieldYear��$ShippedDate��$
ColumnArea=�!

GroupInterval$!DateYear=�$
Year��$	200Q�!"<local:PivotGridDemoModule x:Class="PivotGridDemo.PivotGrid.CellTemplates"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:sys="clr-namespace:System;assembly=mscorlib"
    xmlns:collections="clr-namespace:System.Collections;assembly=mscorlib"
    xmlns:local="clr-namespace:PivotGridDemo.PivotGrid"
    xmlns:dxpg="http://schemas.devexpress.com/winfx/2008/xaml/pivotgrid"
    xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
    xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
    xmlns:dxdb="http://schemas.devexpress.com/winfx/2008/xaml/demobase">

    <local:PivotGridDemoModule.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="/PivotGridDemo;component/Controls/ControlStyles/InplaceProgressBar.xaml" />
            </ResourceDictionary.MergedDictionaries>
            <dx:BoolToVisibilityConverter x:Key="BoolToVisibilityConverter"/>
            <DataTemplate x:Key="CellTemplate">
                <Grid>
                    <ProgressBar Template="{StaticResource InplaceProgressBarTemplate}" x:Name="cellShare" VerticalAlignment="Stretch" Margin="2,1,2,1"
                                 Maximum="{Binding Path=RowTotalValue, Mode=OneWay, Converter={local:RoundConverter}}"
                                 Value="{Binding Path=Value, Mode=OneWay, Converter={local:RoundConverter}}"
                                 ToolTipService.ToolTip="Share in product category sales" />
                    <Border Name="cellValue" BorderBrush="#1F000000" BorderThickness="1" Visibility="{Binding Path=IsCellValueVisible, RelativeSource={RelativeSource FindAncestor, AncestorType=local:PivotGridDemoModule}, Converter={StaticResource BoolToVisibilityConverter}}"
                             HorizontalAlignment="Center" VerticalAlignment="Center" Background="#FFFFFFFF"
                             CornerRadius="2,2,2,2">
                        <TextBlock TextAlignment="Center" TextWrapping="NoWrap"
                                   Margin="5,-2,5,-2" Text="{Binding DisplayText}"
                                   Foreground="Black" VerticalAlignment="Center" HorizontalAlignment="Center">
                            <ToolTipService.ToolTip>
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock Margin="0,0,2,0">Sales of</TextBlock>
                                    <TextBlock Text="{Binding RowValueDisplayText}" FontWeight="UltraBold" Margin="0,0,2,0" />
                                    <TextBlock Margin="0,0,2,0">in</TextBlock>
                                    <TextBlock Text="{Binding ColumnValueDisplayText}" FontWeight="UltraBold" />
                                </StackPanel>
                            </ToolTipService.ToolTip>
                        </TextBlock>
                    </Border>
                </Grid>
            </DataTemplate>
        </ResourceDictionary>
    </local:PivotGridDemoModule.Resources>

    <dxdb:DemoModuleControl>
        <dxdb:DemoModuleControl.OptionsContent>
            <StackPanel Orientation="Vertical">
                <dx:GroupFrame Header="Template">
                    <dxe:ListBoxEdit x:Name="templatesList" ShowBorder="False" SelectedIndex="2" Background="{x:Null}" SelectedIndexChanged="TemplatesList_SelectionChanged">
                        <dxe:ListBoxEdit.StyleSettings>
                            <dxe:RadioListBoxEditStyleSettings />
                        </dxe:ListBoxEdit.StyleSettings>
                        <dxe:ListBoxEdit.Items>
                            <sys:String>None</sys:String>
                            <sys:String>Share Only</sys:String>
                            <sys:String>Value and Share</sys:String>
                        </dxe:ListBoxEdit.Items>
                    </dxe:ListBoxEdit>
                </dx:GroupFrame>
            </StackPanel>
        </dxdb:DemoModuleControl.OptionsContent>

        <dxpg:PivotGridControl local:FieldAreaHelper.FixAreas="True" x:Name="pivotGrid"
                               RowTreeWidth="200" ShowBorder="False">
            <dxpg:PivotGridControl.Fields>
                <dxpg:PivotGridField x:Name="fieldCategory" FieldName="CategoryName" Area="RowArea" Width="100" Caption="Category" />
                <dxpg:PivotGridField x:Name="fieldProduct" FieldName="ProductName" Area="RowArea" Width="200" Caption="Product" />
                <dxpg:PivotGridField x:Name="fieldSales" FieldName="ProductSales" Area="DataArea" Width="200" Caption="Sales"
                                 CellTemplate="{StaticResource CellTemplate}" />
                <dxpg:PivotGridField x:Name="fieldYear" FieldName="ShippedDate" Area="ColumnArea"
                                 GroupInterval="DateYear" Caption="Year" Width="200" />
            </dxpg:PivotGridControl.Fields>
        </dxpg:PivotGridControl>
    </dxdb:DemoModuleControl>
</local:PivotGridDemoModule>!�using System;
using System.Windows.Data;
using System.Windows.Markup;
using DevExpress.Xpf.DemoBase;
using System.Windows;
using DevExpress.Xpf.Core;

namespace PivotGridDemo.PivotGrid {
    public partial class CellTemplates : PivotGridDemoModule {
        #region static stuff
        public static readonly DependencyProperty IsCellTemplateVisibleProperty;
        public static readonly DependencyProperty IsCellValueVisibleProperty;
        public static readonly DependencyProperty IsCellShareVisibleProperty;

        static CellTemplates() {
            Type ownerType = typeof(CellTemplates);
            IsCellTemplateVisibleProperty = DependencyProperty.Register("IsCellTemplateVisible", typeof(bool),
                ownerType, new PropertyMetadata(true, OnCellTemplateVisiblePropertyChanged));
            IsCellValueVisibleProperty = DependencyProperty.Register("IsCellValueVisible", typeof(bool),
                ownerType, new PropertyMetadata(true));
            IsCellShareVisibleProperty = DependencyProperty.Register("IsCellShareVisible", typeof(bool),
                ownerType, new PropertyMetadata(true));
        }
        static void OnCellTemplateVisiblePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) {
            ((CellTemplates)d).OnCellTemplateVisibleChanged();
        }
        #endregion        

        public CellTemplates() {
            InitializeComponent();
            pivotGrid.DataSource = NWindData.ProductReports;
        }

        public bool IsCellTemplateVisible {
            get { return (bool)GetValue(IsCellTemplateVisibleProperty); }
            set { SetValue(IsCellTemplateVisibleProperty, value); }
        }

        public bool IsCellValueVisible {
            get { return (bool)GetValue(IsCellValueVisibleProperty); }
            set { SetValue(IsCellValueVisibleProperty, value); }
        }

        public bool IsCellShareVisible {
            get { return (bool)GetValue(IsCellShareVisibleProperty); }
            set { SetValue(IsCellShareVisibleProperty, value); }
        }

        void OnCellTemplateVisibleChanged() {
            if(IsCellTemplateVisible) {
                fieldSales.CellTemplate = (DataTemplate)Resources["CellTemplate"];
                fieldYear.Width = 200;
            } else {
                fieldSales.CellTemplate = null;
                fieldYear.Width = 100;
            }
        }

        void TemplatesList_SelectionChanged(object sender, RoutedEventArgs e) {
            switch(templatesList.SelectedIndex) {
                case 0:
                    IsCellTemplateVisible = false;
                    break;
                case 1:
                    IsCellTemplateVisible = true;
                    IsCellValueVisible = false;
                    IsCellShareVisible = true;
                    break;
                case 2:
                    IsCellTemplateVisible = true;
                    IsCellValueVisible = true;
                    IsCellShareVisible = true;
                    break;
            }
        }
    }

    public class RoundConverter : MarkupExtension, IValueConverter {
        #region IValueConverter Members
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
            return System.Convert.ToInt32(value);
        }
        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
            throw new NotImplementedException();
        }
        #endregion

        public override object ProvideValue(IServiceProvider serviceProvider) {
            return this;
        }
    }
}!�MSBAML```����OKmscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0891&clr-namespace:System;assembly=mscorlibSystemI2clr-namespace:System.Collections;assembly=mscorlibSystem.CollectionsIEPivotGridDemo, Version=13.1.4.0, Culture=neutral, PublicKeyToken=nullA%clr-namespace:PivotGridDemo.PivotGridPivotGridDemo.PivotGrid1+PivotGridDemo.PivotGrid.ChartGeneralOptions\XPresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNWindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35WSPresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35D9http://schemas.microsoft.com/winfx/2006/xaml/presentationRNSystem.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:x,http://schemas.microsoft.com/winfx/2006/xaml6sys&clr-namespace:System;assembly=mscorlibJcollections2clr-namespace:System.Collections;assembly=mscorlib7local%clr-namespace:PivotGridDemo.PivotGridfbDevExpress.Xpf.PivotGrid.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aBdxpg7http://schemas.devexpress.com/winfx/2008/xaml/pivotgrida]DevExpress.Xpf.Core.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a?dxe5http://schemas.devexpress.com/winfx/2008/xaml/editorsc_DevExpress.Xpf.Charts.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a>dxc4http://schemas.devexpress.com/winfx/2008/xaml/chartse	aDevExpress.Xpf.DemoBase.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aAdxdb6http://schemas.devexpress.com/winfx/2008/xaml/demobase	j
fDevExpress.Xpf.LayoutControl.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aFdxlc;http://schemas.devexpress.com/winfx/2008/xaml/layoutcontrol
;dx2http://schemas.devexpress.com/winfx/2008/xaml/core1+PivotGridDemo.PivotGrid.PivotGridDemoModule
Loaded$ PivotGridDemoModule_Loaded��.�/	)DevExpress.Xpf.DemoBase.DemoModuleControlOptionsContent����Orientation$Vertical=�$	�275��.+�$DevExpress.Xpf.Core.GroupFrame$��Chart Appearance��$
�0,0,0,4q�.���.+���ColumnDefinitions��$
�Auto���$
�Auto�.+���$
�4,3,7,0q�$�Center=�$�LeftToRight=�
Chart Type:)#DevExpress.Xpf.Editors.ComboBoxEdit-$�cbChartType��$�1�$�Center=�$
�Stretch=�'!DevExpress.Xpf.Editors.ButtonEditIsTextEditable.$
�4,0,0,4q�$�1�& DevExpress.Xpf.Editors.CheckEdit-$�ceShowPointsLabels��	IsChecked$FalseY�Content)#DevExpress.Xpf.Core.ObjectConverter$Show Point Labels$
�4,4,0,0q�$�2�$��Chart Orientation��$
�0,0,0,8q�.���.+�("DevExpress.Xpf.Editors.ListBoxEdit-Name$crChartDataVertical��%	DevExpress.Xpf.Editors.BaseEdit	
ShowBorder.	
SelectedIndex$	0��Z�

StyleSettings
:
4DevExpress.Xpf.Editors.RadioListBoxEditStyleSettings
Items�� Generate Series From Columns����Generate Series From Rows��$��Pivot Grid Options��$
�0,0,0,8q�.���.+�-$�ceChartSelectionOnly��$Chart Selection Only$�16��$
�4,4,0,4q�$�4���ElementName$	pivotGrid��
�Path$
ChartSelectionOnly��Mode$TwoWay=�-$"�ceChartShowColumnGrandTotals��$Show Column Grand Totals$�16��$
�4,4,0,4q�$�5��$	pivotGrid��$#
ChartProvideColumnGrandTotals�$TwoWay=�-$�ceChartShowRowGrandTotals��$Show Row Grand Totals$�16��$
�4,4,0,0q�$�6��$	pivotGrid��$ 
ChartProvideRowGrandTotals�$TwoWay=���$
Horizontal=�.+���$
�4,3,7,0q�$�Center=�$�LeftToRight=�Chart Update Delay:%DevExpress.Xpf.Editors.SpinEdit-$�UpdateDelay��%DevExpress.Xpf.Editors.TextEditMask$	N00��$�60��$
�4,5,0,0q�	Increment$	100~�MaxValue$
5000X�MinValue$0X�Value�$	pivotGrid��$
ChartUpdateDelay�$TwoWay=��-$�warningChart��$y�	Collapsed=���$
�Auto���$�*�.+��$5��//PivotGridDemo;component/Images/WarningIcon.png�$
��None=�$�0���$
��Wrap=�$
�6,6,6,0q�$�1�igTo chart Column or Row Grand Total values, enable the Show Column Grand Totals or Show Row Grand TotalsContent.�.+�0

*DevExpress.Xpf.LayoutControl.LayoutControl
-	
Name$
mainLayout��
AllowItemSizing.4
.DevExpress.Xpf.LayoutControl.LayoutControlBasePadding$12q�.
(DevExpress.Xpf.LayoutControl.LayoutGroupOrientation$Vertical=�.+�
AllowVerticalSizing.$
�0,0,0,4q�.+�/)DevExpress.Xpf.PivotGrid.PivotGridControl-
Name$	pivotGrid��-'PivotGridDemo.PivotGrid.FieldAreaHelperFixAreas.RowTreeWidth$	130� ChartProvideDataByColumns.ChartSelectionOnly.$ChartProvideColumnGrandTotals.! ChartProvideRowGrandTotals .!ChartDataProvideMode$!UseCustomSettings=�
"Fields"-'DevExpress.Xpf.PivotGrid.PivotGridField-#Name$#fieldProductName��$	FieldName$$ProductName��%Area$
%RowArea=�&	AreaIndex$&0�'Caption$'Product Name��(Width$	(155Q�-$#fieldExtendedPrice��$$Extended Price��$%DataArea=�$&0�)
CellFormat$)c��-
$#fieldOrderMonth��$$	OrderDate��*UnboundFieldName$*fieldOrderDateMonth��$%
ColumnArea=�$&0�+
GroupInterval$+	DateMonth=�$'Order Month��-$#fieldOrderYear��$$	OrderDate��$*fieldOrderDateYear��$%
FilterArea=�$&0�$+DateYear=�$'
Order Year��.+��$
�0,4,0,0q�.+�("DevExpress.Xpf.Charts.ChartControl-$�chartControl��,
DataSource,�$	pivotGrid��$
ChartDataSource�-CrosshairOptions-,&DevExpress.Xpf.Charts.CrosshairOptions.ShowArgumentLine..
/Legend/"DevExpress.Xpf.Charts.Legend0ReverseItems0.!%<local:PivotGridDemoModule x:Class="PivotGridDemo.PivotGrid.ChartGeneralOptions"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:sys="clr-namespace:System;assembly=mscorlib"
    xmlns:collections="clr-namespace:System.Collections;assembly=mscorlib"
    xmlns:local="clr-namespace:PivotGridDemo.PivotGrid"
    xmlns:dxpg="http://schemas.devexpress.com/winfx/2008/xaml/pivotgrid"
    xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
    xmlns:dxc="http://schemas.devexpress.com/winfx/2008/xaml/charts"
    xmlns:dxdb="http://schemas.devexpress.com/winfx/2008/xaml/demobase"
    xmlns:dxlc="http://schemas.devexpress.com/winfx/2008/xaml/layoutcontrol"
    xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core" Loaded="PivotGridDemoModule_Loaded">
    <dxdb:DemoModuleControl>
        <dxdb:DemoModuleControl.OptionsContent>
            <StackPanel Orientation="Vertical" Width="275">
                <dx:GroupFrame Header="Chart Appearance" Margin="0,0,0,4">
                    <StackPanel>
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="Auto" />
                                <ColumnDefinition Width="Auto" />
                            </Grid.ColumnDefinitions>
                            <TextBlock Margin="4,3,7,0" VerticalAlignment="Center" FlowDirection="LeftToRight">Chart Type:</TextBlock>
                            <dxe:ComboBoxEdit Grid.Column="1" Name="cbChartType" VerticalAlignment="Center" HorizontalAlignment="Stretch"
                                      IsTextEditable="False" Margin="4,0,0,4" SelectedIndexChanged="cbChartType_SelectedIndexChanged" TabIndex="1" />
                        </Grid>
                        <dxe:CheckEdit Name="ceShowPointsLabels" Checked="ceShowPointsLabels_Checked" Unchecked="ceShowPointsLabels_Checked" IsChecked="False" Content="Show Point Labels" Margin="4,4,0,0" TabIndex="2" />
                    </StackPanel>
                </dx:GroupFrame>
                <dx:GroupFrame Header="Chart Orientation" Margin="0,0,0,8">
                    <StackPanel>
                        <dxe:ListBoxEdit x:Name="crChartDataVertical" ShowBorder="False" SelectedIndexChanged="oncrChartDataVerticalSelectedIndexChanged" SelectedIndex="0" Background="{x:Null}" >
                            <dxe:ListBoxEdit.StyleSettings>
                                <dxe:RadioListBoxEditStyleSettings />
                            </dxe:ListBoxEdit.StyleSettings>
                            <dxe:ListBoxEdit.Items>
                                <sys:String>Generate Series From Columns</sys:String>
                                <sys:String>Generate Series From Rows</sys:String>
                            </dxe:ListBoxEdit.Items>
                        </dxe:ListBoxEdit>
                    </StackPanel>
                </dx:GroupFrame>
                <dx:GroupFrame Header="Pivot Grid Options" Margin="0,0,0,8">
                    <StackPanel>
                        <dxe:CheckEdit Name="ceChartSelectionOnly" IsChecked="{Binding ElementName=pivotGrid, Path=ChartSelectionOnly, Mode=TwoWay}" Content="Chart Selection Only" Height="16" Margin="4,4,0,4" TabIndex="4" />
                        <dxe:CheckEdit Name="ceChartShowColumnGrandTotals" IsChecked="{Binding ElementName=pivotGrid, Path=ChartProvideColumnGrandTotals, Mode=TwoWay}" Content="Show Column Grand Totals" Height="16" Margin="4,4,0,4" TabIndex="5" />
                        <dxe:CheckEdit Name="ceChartShowRowGrandTotals" IsChecked="{Binding ElementName=pivotGrid, Path=ChartProvideRowGrandTotals, Mode=TwoWay}" Content="Show Row Grand Totals" Height="16" Margin="4,4,0,0" TabIndex="6" />
                        <StackPanel Orientation="Horizontal">
                            <TextBlock Margin="4,3,7,0" VerticalAlignment="Center" FlowDirection="LeftToRight">Chart Update Delay:</TextBlock>
                            <dxe:SpinEdit Name="UpdateDelay" Value="{Binding ElementName=pivotGrid, Path=ChartUpdateDelay, Mode=TwoWay}" Mask="N00" Width="60" Margin="4,5,0,0" Increment="100" MaxValue="5000" MinValue="0" />
                        </StackPanel>

                    </StackPanel>
                </dx:GroupFrame>
                <Grid Name="warningChart" Visibility="Collapsed">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto" />
                        <ColumnDefinition Width="*" />
                    </Grid.ColumnDefinitions>
                    <Image Source="/PivotGridDemo;component/Images/WarningIcon.png" Stretch="None" Grid.Column="0"/>
                    <TextBlock TextWrapping="Wrap" Margin="6,6,6,0" Grid.Column="1">
                        To chart Column or Row Grand Total values, enable the Show Column Grand Totals or Show Row Grand Totals
                    </TextBlock>
                </Grid>
            </StackPanel>
        </dxdb:DemoModuleControl.OptionsContent>
        <Grid>
            <dxlc:LayoutControl x:Name="mainLayout" AllowItemSizing="True" Padding="12" Orientation="Vertical" >
                <dxlc:LayoutGroup dxlc:LayoutControl.AllowVerticalSizing="True" Margin="0,0,0,4">
                    <dxpg:PivotGridControl x:Name="pivotGrid"
                                   local:FieldAreaHelper.FixAreas="True" RowTreeWidth="130"
                                   ChartProvideDataByColumns="False"
                                   ChartSelectionOnly="True" ChartProvideColumnGrandTotals="False"
                                   ChartProvideRowGrandTotals="False" ChartDataProvideMode="UseCustomSettings"
                                   CustomChartDataSourceData="pivotGrid_CustomChartDataSourceData">
                        <dxpg:PivotGridControl.Fields>
                            <dxpg:PivotGridField x:Name="fieldProductName" FieldName="ProductName" Area="RowArea" AreaIndex="0"
                                    Caption="Product Name" Width="155" />
                            <dxpg:PivotGridField x:Name="fieldExtendedPrice" FieldName="Extended Price" Area="DataArea" AreaIndex="0"
                                     CellFormat="c" />
                            <dxpg:PivotGridField x:Name="fieldOrderMonth" FieldName="OrderDate" UnboundFieldName="fieldOrderDateMonth"
                                     Area="ColumnArea" AreaIndex="0"
                                     GroupInterval="DateMonth" Caption="Order Month" />
                            <dxpg:PivotGridField x:Name="fieldOrderYear" FieldName="OrderDate" UnboundFieldName="fieldOrderDateYear"
                                     Area="FilterArea" AreaIndex="0"
                                     GroupInterval="DateYear" Caption="Order Year" />
                        </dxpg:PivotGridControl.Fields>
                    </dxpg:PivotGridControl>
                </dxlc:LayoutGroup>
                <dxlc:LayoutGroup>
                    <Grid Margin="0,4,0,0">
                        <dxc:ChartControl Name="chartControl" DataSource="{Binding ElementName=pivotGrid, Path=ChartDataSource}" BoundDataChanged="chartControl_BoundDataChanged">
                            <dxc:ChartControl.CrosshairOptions>
                                <dxc:CrosshairOptions ShowArgumentLine="False"/>
                            </dxc:ChartControl.CrosshairOptions>
                            <dxc:ChartControl.Legend>
                                <dxc:Legend ReverseItems="True"  />
                            </dxc:ChartControl.Legend>
                        </dxc:ChartControl>
                    </Grid>
                </dxlc:LayoutGroup>
            </dxlc:LayoutControl>
        </Grid>
    </dxdb:DemoModuleControl>
</local:PivotGridDemoModule>!17using System;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
using DevExpress.Xpf.Core;
using DevExpress.Xpf.Charts;
using DevExpress.Xpf.DemoBase;
using DevExpress.Xpf.Editors;
using DevExpress.Xpf.PivotGrid;

namespace PivotGridDemo.PivotGrid {
    public partial class ChartGeneralOptions : PivotGridDemoModule {

        static readonly string[] ProductFilterValues = {"Chai", "Chang", "Chocolade", "Filo Mix", "Geitost", "Ikura", "Konbu",
            "Maxilaku", "Pavlova", "Spegesild", "Tofu", "Tourtière"};
        public ChartGeneralOptions() {
            InitializeComponent();
        }
        void PivotGridDemoModule_Loaded(object sender, RoutedEventArgs e) {
            ChartFactory.InitComboBox(cbChartType, null);
            pivotGrid.DataSource = NWindData.SalesPerson;
            SetFilter();
            SetSelection();
        }
        void SetFilter() {
            fieldProductName.FilterValues.ValuesIncluded = ProductFilterValues;
            fieldOrderYear.FilterValues.SetValues(new object[] { 1995 }, FieldFilterType.Included, true);
        }
        void SetSelection() {
            pivotGrid.SetSelectionByFieldValues(false, new object[] { "Chai" });
            pivotGrid.SetSelectionByFieldValues(false, new object[] { "Chocolade" });
        }
        void cbChartType_SelectedIndexChanged(object sender, RoutedEventArgs e) {
            if(cbChartType.SelectedIndex < 0)
                return;
            chartControl.Diagram = ChartFactory.GenerateDiagram((Type)((ComboBoxEditItem)cbChartType.SelectedItem).Tag, ceShowPointsLabels.IsChecked);
            pivotGrid.ChartProvideEmptyCells = IsProvideEmptyCells();
        }
        void ceShowPointsLabels_Checked(object sender, RoutedEventArgs e) {
            chartControl.Diagram.SeriesTemplate.LabelsVisibility = object.Equals(ceShowPointsLabels.IsChecked, true);
            chartControl.CrosshairEnabled = object.Equals(ceShowPointsLabels.IsChecked, false);
        }

        void oncrChartDataVerticalSelectedIndexChanged(object sender, RoutedEventArgs e) {
            pivotGrid.ChartProvideDataByColumns = crChartDataVertical.SelectedIndex == 1;
        }

        void chartControl_BoundDataChanged(object sender, RoutedEventArgs e) {
            if(chartControl.Diagram is SimpleDiagram2D)
                ConfigurePie();
            if(chartControl.Diagram is SimpleDiagram3D)
                ConfigurePie();
            CheckWarningVisivility();
        }

        void ConfigurePie() {
            Dictionary<PieSeries, int> counts = new Dictionary<PieSeries, int>();
            foreach(PieSeries series in chartControl.Diagram.Series) {
                counts.Add(series, GetPointsCount(series));
                series.Titles.Add(new Title() { Content = series.DisplayName, Dock = Dock.Bottom, HorizontalAlignment = System.Windows.HorizontalAlignment.Center, FontSize = 12, VerticalAlignment = System.Windows.VerticalAlignment.Center });
                series.ShowInLegend = false;
            }

            int max = 0;
            PieSeries maxSeries = null;
            foreach(KeyValuePair<PieSeries, int> pair in counts)
                if(max < pair.Value) {
                    max = pair.Value;
                    maxSeries = pair.Key;
                }

            if(maxSeries == null)
                return;
            List<string> values = new List<string>();
            foreach(SeriesPoint point in maxSeries.Points)
                values.Add(point.Argument);

            maxSeries.ShowInLegend = true;

            if(chartControl.Diagram is SimpleDiagram2D)
                foreach(PieSeries series in chartControl.Diagram.Series) {
                    foreach(SeriesPoint point in maxSeries.Points)
                        if(!values.Contains(point.Argument)) {
                            series.ShowInLegend = true;
                            values.Add(point.Argument);
                        }
                }
        }

        int GetPointsCount(PieSeries series) {
            int count = 0;
            for(int i = 0; i < series.Points.Count; i++)
                if(!double.IsNaN(series.Points[i].Value))
                    count++;
            return count;
        }

        void CheckWarningVisivility() {
            PivotCellBaseEventArgs cellInfo;
            bool showWarning = false;
            if(pivotGrid.MultiSelection.SelectedCells.Count == 0) {
                cellInfo = pivotGrid.GetCellInfo(pivotGrid.FocusedCell.X, pivotGrid.FocusedCell.Y);
                showWarning = (cellInfo.ColumnValueType == FieldValueType.GrandTotal && !pivotGrid.ChartProvideColumnGrandTotals)
                                || (cellInfo.RowValueType == FieldValueType.GrandTotal && !pivotGrid.ChartProvideRowGrandTotals);
            }
            else {
                foreach(System.Drawing.Point cell in pivotGrid.MultiSelection.SelectedCells) {
                    cellInfo = pivotGrid.GetCellInfo(cell.X, cell.Y);
                    if((cellInfo.ColumnValueType == FieldValueType.GrandTotal && !pivotGrid.ChartProvideColumnGrandTotals)
                        || (cellInfo.RowValueType == FieldValueType.GrandTotal && !pivotGrid.ChartProvideRowGrandTotals)) {
                        showWarning = true;
                    }
                    else {
                        showWarning = false;
                        break;
                    }
                }
            }
            warningChart.SetVisible(showWarning);
        }
        bool IsProvideEmptyCells() {
            if ((chartControl.Diagram is SimpleDiagram2D)
                || (chartControl.Diagram is SimpleDiagram3D)
                )
                return true;
            return false;
        }
        void pivotGrid_CustomChartDataSourceData(object sender, PivotCustomChartDataSourceDataEventArgs e) {
            if (IsProvideEmptyCells()) {
                if (e.ItemDataMember == PivotChartItemDataMember.Value && e.Value == DBNull.Value)
                    e.Value = 0;
            }
        }
    }
    internal static class ChartFactory {
        static readonly Type XYDiagram2DType = typeof(XYDiagram2D);
        static readonly Type XYDiagram3DType = typeof(XYDiagram3D);
        static readonly Type SimpleDiagram3DType = typeof(SimpleDiagram3D);
        static readonly Type SimpleDiagram2DType = typeof(SimpleDiagram2D);
        static readonly Type DefaultSeriesType = typeof(BarStackedSeries2D);

        static Dictionary<Type, SeriesTypeDescriptor> seriesTypes;
        public static Dictionary<Type, SeriesTypeDescriptor> SeriesTypes {
            get {
                if(seriesTypes == null)
                    seriesTypes = CreateSeriesTypes();
                return seriesTypes;
            }
        }
        static Dictionary<Type, SeriesTypeDescriptor> CreateSeriesTypes() {
            Dictionary<Type, SeriesTypeDescriptor> seriesTypes = new Dictionary<Type, SeriesTypeDescriptor>();
            seriesTypes.Add(typeof(AreaFullStackedSeries2D), new SeriesTypeDescriptor { DiagramType = XYDiagram2DType, DisplayText = "Area Full-Stacked Series 2D" });
            seriesTypes.Add(typeof(AreaSeries2D), new SeriesTypeDescriptor { DiagramType = XYDiagram2DType, DisplayText="Area Series 2D"});
            seriesTypes.Add(typeof(AreaStackedSeries2D),  new SeriesTypeDescriptor { DiagramType = XYDiagram2DType, DisplayText="Area Stacked Series 2D"});
            seriesTypes.Add(typeof(BarFullStackedSeries2D), new SeriesTypeDescriptor { DiagramType =  XYDiagram2DType, DisplayText="Bar Full-Stacked Series 2D"});
            seriesTypes.Add(typeof(BarStackedSeries2D), new SeriesTypeDescriptor { DiagramType =  XYDiagram2DType, DisplayText="Bar Stacked Series 2D"});
            seriesTypes.Add(typeof(LineSeries2D), new SeriesTypeDescriptor { DiagramType = XYDiagram2DType, DisplayText="Line Series 2D" });
            seriesTypes.Add(typeof(PointSeries2D), new SeriesTypeDescriptor { DiagramType = XYDiagram2DType, DisplayText = "Point Series 2D" });
            seriesTypes.Add(typeof(AreaSeries3D), new SeriesTypeDescriptor { DiagramType = XYDiagram3DType, DisplayText="Area Series 3D" });
            seriesTypes.Add(typeof(AreaStackedSeries3D), new SeriesTypeDescriptor { DiagramType = XYDiagram3DType, DisplayText="Area Stacked Series 3D" });
            seriesTypes.Add(typeof(AreaFullStackedSeries3D), new SeriesTypeDescriptor { DiagramType = XYDiagram3DType, DisplayText="Area Full-Stacked Series 3D" });
            seriesTypes.Add(typeof(BarSeries3D), new SeriesTypeDescriptor { DiagramType = XYDiagram3DType, DisplayText="Bar Series 3D" });
            seriesTypes.Add(typeof(PointSeries3D), new SeriesTypeDescriptor { DiagramType = XYDiagram3DType, DisplayText="Point Series 3D" });
            seriesTypes.Add(typeof(PieSeries3D), new SeriesTypeDescriptor { DiagramType = SimpleDiagram3DType, DisplayText="Pie Series 3D" });
            seriesTypes.Add(typeof(PieSeries2D), new SeriesTypeDescriptor { DiagramType = SimpleDiagram2DType, DisplayText = "Pie Series 2D" });
            return seriesTypes;
        }

        public class SeriesTypeDescriptor {
            public Type DiagramType { get; set; }
            public string DisplayText { get; set; }
        }

        public static int CompareComboItemsByStringContent(ComboBoxEditItem first, ComboBoxEditItem second) {
            string firstStr = first.Content as string;
            return firstStr == null ? -1 : firstStr.CompareTo(second.Content as string);
        }
        public static void InitComboBox(ComboBoxEdit comboBox, Type[] diagramFilter) {
            List<ComboBoxEditItem> itemsList = new List<ComboBoxEditItem>();
            ComboBoxEditItem item, selectedItem = null;
            foreach(Type seriesType in SeriesTypes.Keys) {
                SeriesTypeDescriptor sd = SeriesTypes[seriesType];
                if(diagramFilter == null || Array.IndexOf(diagramFilter, sd.DiagramType) >= 0) {
                    item = new ComboBoxEditItem();
                    item.Content = sd.DisplayText;
                    item.Tag = seriesType;
                    itemsList.Add(item);
                    if(seriesType == DefaultSeriesType)
                        selectedItem = item;
                }
            }
            itemsList.Sort(CompareComboItemsByStringContent);
            comboBox.Items.AddRange(itemsList.ToArray());
            comboBox.SelectedItem = selectedItem;
        }
        public static Diagram GenerateDiagram(Type seriesType, bool? showPointsLabels) {
            Series seriesTemplate = CreateSeriesInstance(seriesType);
            Diagram diagram = CreateDiagramBySeriesType(seriesType);
            if (diagram is XYDiagram2D)
                PrepareXYDiagram2D(diagram as XYDiagram2D);
            if (diagram is XYDiagram3D)
                PrepareXYDiagram3D(diagram as XYDiagram3D);
            if (diagram is Diagram3D)
                ((Diagram3D)diagram).RuntimeRotation = true;
            diagram.SeriesDataMember = "Series";
            seriesTemplate.ArgumentDataMember = "Arguments";
            seriesTemplate.ValueDataMember = "Values";
            if(seriesTemplate.Label == null)
                seriesTemplate.Label = new SeriesLabel();
            seriesTemplate.LabelsVisibility = showPointsLabels == true;
            if(seriesTemplate is PieSeries2D
                 || seriesTemplate is PieSeries3D
                ) {

                if(seriesTemplate.LegendPointOptions == null)
                    seriesTemplate.LegendPointOptions = new PointOptions();
                seriesTemplate.LegendPointOptions.PointView = PointView.Argument;

                seriesTemplate.PointOptions = new PointOptions();
                seriesTemplate.PointOptions.PointView = PointView.ArgumentAndValues;
                seriesTemplate.PointOptions.ValueNumericOptions = new NumericOptions();
                seriesTemplate.PointOptions.ValueNumericOptions.Format = NumericFormat.Percent;
                seriesTemplate.PointOptions.ValueNumericOptions.Precision = 0;

            } else {
                if(seriesTemplate.LegendPointOptions == null)
                    seriesTemplate.LegendPointOptions = new PointOptions();
                seriesTemplate.LegendPointOptions.PointView = PointView.ArgumentAndValues;
                seriesTemplate.PointOptions = null;
                seriesTemplate.ShowInLegend = true;
            }
            diagram.SeriesTemplate = seriesTemplate;
            return diagram;
        }
        static void PrepareXYDiagram2D(XYDiagram2D diagram) {
            if(diagram == null) return;
            diagram.AxisX = new AxisX2D();
            diagram.AxisX.Label = new AxisLabel();
            diagram.AxisX.Label.Staggered = true;
        }
        static void PrepareXYDiagram3D(XYDiagram3D diagram) {
            if(diagram == null) return;
            diagram.AxisX = new AxisX3D();
            diagram.AxisX.Label = new AxisLabel();
            diagram.AxisX.Label.Visible = false;
        }
        public static Series CreateSeriesInstance(Type seriesType) {
            Series series = (Series)Activator.CreateInstance(seriesType);
            ISupportTransparency supportTransparency = series as ISupportTransparency;
            if(supportTransparency != null) {
                bool flag = series is AreaSeries2D;
                flag = flag || series is AreaSeries3D;
                if(flag)
                    supportTransparency.Transparency = 0.4;
                else
                    supportTransparency.Transparency = 0;
            }
            return series;
        }
        static Diagram CreateDiagramBySeriesType(Type seriesType) {
            return (Diagram)Activator.CreateInstance(SeriesTypes[seriesType].DiagramType);
        }
    }
}!�MSBAML```����IEPivotGridDemo, Version=13.1.4.0, Culture=neutral, PublicKeyToken=nullA%clr-namespace:PivotGridDemo.PivotGridPivotGridDemo.PivotGrid60PivotGridDemo.PivotGrid.ConditionalSortBySummary\XPresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNWindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35WSPresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35D9http://schemas.microsoft.com/winfx/2006/xaml/presentationRNSystem.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:x,http://schemas.microsoft.com/winfx/2006/xaml7local%clr-namespace:PivotGridDemo.PivotGridfbDevExpress.Xpf.PivotGrid.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aBdxpg7http://schemas.devexpress.com/winfx/2008/xaml/pivotgrida]DevExpress.Xpf.Core.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a?dxe5http://schemas.devexpress.com/winfx/2008/xaml/editors;dx2http://schemas.devexpress.com/winfx/2008/xaml/coreeaDevExpress.Xpf.DemoBase.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aAdxdb6http://schemas.devexpress.com/winfx/2008/xaml/demobase1+PivotGridDemo.PivotGrid.PivotGridDemoModule
Loaded$ PivotGridDemoModule_Loaded��$	�300��$	�300���	Resources
 FieldHeaderTemplate%DevExpress.Xpf.Core.SimplePanel��Padding�Path�Mode�%&	��.R�.+��$<��6/PivotGridDemo;component/Images/HeaderIcons/Person.png�$
��None=�$
�Left=�$�Center=�$�	0,-1,2,-1q���$�	textBlock��$18,0,0,0q�$�Right=����$DisplayText�$OneWay=���$ActualHeaderContentStyle�.�/)DevExpress.Xpf.DemoBase.DemoModuleControlContent./)DevExpress.Xpf.PivotGrid.PivotGridControl-Name$	pivotGrid��-'PivotGridDemo.PivotGrid.FieldAreaHelperFixAreas.ShowDataHeaders.	ShowFilterHeaders	.
RowTreeWidth$	
146�$
�Stretch=�
ShowBorder.
Fields-'DevExpress.Xpf.PivotGrid.PivotGridField-
Name$

fieldMonth��	FieldName$	OrderDate��Area$
ColumnArea=�	AreaIndex$1�UnboundFieldName$fieldQuarter��
GroupInterval$	DateMonth=�Width$	130Q�Caption$Order Month��-$
fieldSalesPerson��$Sales Person��$
RowArea=�$0�$	130Q�$Sales Person��	SortOrder$
Descending=�HeaderTemplate#[HeaderListTemplate#[SortByField��ElementName$
fieldDiscount��-$
fieldExtendedPrice��$Extended Price��$DataArea=�$0�$Order Amount��
CellFormat$c��-$
	fieldYear��$	OrderDate��$
ColumnArea=�$0�$DateYear=�$	fieldYear��AllowSortBySummary$FalseY�$
Order Year��-$

fieldQuantity��$Quantity��$DataArea=�$1�$Quantity��-$

fieldDiscount��$Discount��$DataArea=�$2�$Discount (Avg)��$p��SummaryType$
Average=�!�
<local:PivotGridDemoModule x:Class="PivotGridDemo.PivotGrid.ConditionalSortBySummary"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:PivotGridDemo.PivotGrid"
    xmlns:dxpg="http://schemas.devexpress.com/winfx/2008/xaml/pivotgrid"
    xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
    xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
    xmlns:dxdb="http://schemas.devexpress.com/winfx/2008/xaml/demobase"
    Height="300" Width="300" Loaded="PivotGridDemoModule_Loaded">

    <local:PivotGridDemoModule.Resources>
        <ResourceDictionary>
            <DataTemplate x:Key="FieldHeaderTemplate">
                <dx:SimplePanel>
                    <Image Source="/PivotGridDemo;component/Images/HeaderIcons/Person.png" Stretch="None" HorizontalAlignment="Left"
                           VerticalAlignment="Center" Margin="0,-1,2,-1" />
                    <TextBlock Name="textBlock" Padding="18,0,0,0" Text="{Binding Path=DisplayText, Mode=OneWay}" HorizontalAlignment="Right"
                            Style="{Binding Path=ActualHeaderContentStyle}" />
                </dx:SimplePanel>
            </DataTemplate>
        </ResourceDictionary>
    </local:PivotGridDemoModule.Resources>

    <dxdb:DemoModuleControl>
        <dxpg:PivotGridControl local:FieldAreaHelper.FixAreas="True" x:Name="pivotGrid"  ShowDataHeaders="False" ShowFilterHeaders="False"
                               RowTreeWidth="146" VerticalAlignment="Stretch" ShowBorder="False" Loaded="pivotGrid_Loaded">
            <dxpg:PivotGridControl.Fields>
                <dxpg:PivotGridField x:Name="fieldMonth" FieldName="OrderDate" Area="ColumnArea" AreaIndex="1"
                                 UnboundFieldName="fieldQuarter" GroupInterval="DateMonth" Width="130"
                                 Caption="Order Month" />
                <dxpg:PivotGridField x:Name="fieldSalesPerson" FieldName="Sales Person" Area="RowArea" AreaIndex="0"
                                 Width="130"
                                 Caption="Sales Person" SortByField="{Binding ElementName=fieldDiscount}" SortOrder="Descending"
                                 HeaderTemplate="{StaticResource ResourceKey=FieldHeaderTemplate}"
                                 HeaderListTemplate="{StaticResource ResourceKey=FieldHeaderTemplate}" />
                <dxpg:PivotGridField x:Name="fieldExtendedPrice" FieldName="Extended Price" Area="DataArea" AreaIndex="0"
                                 Caption="Order Amount" CellFormat="c" />
                <dxpg:PivotGridField x:Name="fieldYear" FieldName="OrderDate" Area="ColumnArea" AreaIndex="0"
                                 GroupInterval="DateYear"
                                 UnboundFieldName="fieldYear" AllowSortBySummary="False" Caption="Order Year" />
                <dxpg:PivotGridField x:Name="fieldQuantity" FieldName="Quantity" Area="DataArea" AreaIndex="1"
                                 Caption="Quantity" />
                <dxpg:PivotGridField x:Name="fieldDiscount" FieldName="Discount" Area="DataArea" AreaIndex="2"
                                 Caption="Discount (Avg)" CellFormat="p" SummaryType="Average" />
            </dxpg:PivotGridControl.Fields>
        </dxpg:PivotGridControl>
    </dxdb:DemoModuleControl>
</local:PivotGridDemoModule>!�using System;
using System.Windows;
using DevExpress.Xpf.DemoBase;
using DevExpress.Xpf.PivotGrid;

namespace PivotGridDemo.PivotGrid {
    public partial class ConditionalSortBySummary : PivotGridDemoModule {
        public ConditionalSortBySummary() {
            InitializeComponent();
            pivotGrid.DataSource = NWindData.SalesPerson;
        }
        void PivotGridDemoModule_Loaded(object sender, RoutedEventArgs e) {
            pivotGrid.BeginUpdate();
            fieldYear.FilterValues.ValuesIncluded = new object[] { 1994 };
            if(fieldSalesPerson.SortByConditions.Count < 1) {
                fieldSalesPerson.SortByConditions.Add(new SortByCondition(fieldYear, 1994));
                fieldSalesPerson.SortByConditions.Add(new SortByCondition(fieldMonth, 8));
            }
            pivotGrid.EndUpdate();
        }
        void pivotGrid_Loaded(object sender, RoutedEventArgs e) {
            pivotGrid.BestFit(FieldArea.ColumnArea, true, false);
        }
    }
}!�MSBAML```����IEPivotGridDemo, Version=13.1.4.0, Culture=neutral, PublicKeyToken=nullA%clr-namespace:PivotGridDemo.PivotGridPivotGridDemo.PivotGrid)#PivotGridDemo.PivotGrid.ContextMenu\XPresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNWindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35WSPresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35D9http://schemas.microsoft.com/winfx/2006/xaml/presentationRNSystem.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:x,http://schemas.microsoft.com/winfx/2006/xaml7local%clr-namespace:PivotGridDemo.PivotGridfbDevExpress.Xpf.PivotGrid.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aBdxpg7http://schemas.devexpress.com/winfx/2008/xaml/pivotgrida]DevExpress.Xpf.Core.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a<dxb2http://schemas.devexpress.com/winfx/2008/xaml/bars?dxe5http://schemas.devexpress.com/winfx/2008/xaml/editors;dx2http://schemas.devexpress.com/winfx/2008/xaml/coreeaDevExpress.Xpf.DemoBase.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aAdxdb6http://schemas.devexpress.com/winfx/2008/xaml/demobase$	�300��$	�300��.�/)DevExpress.Xpf.DemoBase.DemoModuleControlContent.$DevExpress.Xpf.Bars.BarManager-$�
barManager��Items& DevExpress.Xpf.Bars.BarCheckItem-�Name$ ShowColumnGrandTotalHeader��!DevExpress.Xpf.Bars.BarItemContent)#DevExpress.Xpf.Core.ObjectConverter$$Show Column Grand Total Header	IsChecked��ElementName$	pivotGrid���Path$ ShowColumnGrandTotalHeader��Mode$TwoWay=�-$ShowColumnGrandTotals��$Show Column Grand Totals�$	pivotGrid��$ShowColumnGrandTotals�$TwoWay=�-$ShowColumnTotals��$Show Column Totals�$	pivotGrid��$ShowColumnTotals�$TwoWay=�-$ShowRowGrandTotalHeader��$!Show Row Grand Total Header�$	pivotGrid��$ShowRowGrandTotalHeader�$TwoWay=�-$ShowRowGrandTotals��$Show Row Grand Totals�$	pivotGrid��$ShowRowGrandTotals�$TwoWay=�-$
ShowRowTotals��$Show Row Totals�$	pivotGrid��$
ShowRowTotals�$TwoWay=�-$$ShowGrandTotalsForSingleValues��$)#Show Grand Totals For Single Values�$	pivotGrid��$$ShowGrandTotalsForSingleValues�$TwoWay=�-	$ShowTotalsForSingleValues��$#Show Totals For Single Values�$	pivotGrid��$ShowTotalsForSingleValues�$TwoWay=�._�/)DevExpress.Xpf.PivotGrid.PivotGridControl-
Name$	pivotGrid��-'PivotGridDemo.PivotGrid.FieldAreaHelper	FixAreas	.
RowTreeWidth$	
305�
ShowBorder.$
�Stretch=�ShowColumnGrandTotals.
ShowFilterHeaders
.DataFieldAreaIndex$2�
DataFieldArea$
ColumnArea=�DataFieldCaption$
Data��#SummaryDataSourceFieldNaming$	FieldName=�
Fields-'DevExpress.Xpf.PivotGrid.PivotGridField-Name$fieldProduct��	FieldName$ProductName��Area$
RowArea=�	AreaIndex$1�Width$	130Q�Caption$Product Name��-$
fieldCategory��$CategoryName��$
RowArea=�$0�$	130Q�$
Category Name��-
$	fieldYear��$	OrderDate��$
ColumnArea=�
GroupInterval$DateYear=�$0�$80Q�$
Year��-$
fieldQuantity��$Quantity��SummaryType$	Sum=�ShowSummaryTypeName.$1�$DataArea=�$70Q�$Quantity��-$
fieldDiscount��$Discount��$
Average=�.$2�$DataArea=�$70Q�$Discount��
CellFormat$p��ValueFormat$p��-$fieldUnitPrice��$	UnitPrice��$	Max=�.$0�$DataArea=�$	130Q�$
Unit Price��#HeaderAreaMenuCustomizations.	(DevExpress.Xpf.Bars.BarItemLinkSeparator	$
DevExpress.Xpf.Bars.BarSubItem
$Totals
	ItemLinks*$DevExpress.Xpf.Bars.BarCheckItemLink%DevExpress.Xpf.Bars.BarItemLink BarItemName$  ShowColumnGrandTotalHeader��$ ShowColumnGrandTotals��$ ShowColumnTotals��	-!	Name$!
Separator1��$ ShowRowGrandTotalHeader��$ ShowRowGrandTotals��$ 
ShowRowTotals��	-$!
Separator2��$$ ShowGrandTotalsForSingleValues��$ ShowTotalsForSingleValues��4
.DevExpress.Xpf.Bars.RemoveBarItemAndLinkAction
+%DevExpress.Xpf.Bars.BarItemActionBase"ItemName$"ItemShowPrefilter��
$"ItemHidePrefilter��
$"ItemRefreshData��
$"ItemShowFieldList��#HeaderMenuCustomizations#	
$Totals$  ShowColumnGrandTotalHeader��$ ShowColumnGrandTotals��$ ShowColumnTotals��	-$!
Separator3��$ ShowRowGrandTotalHeader��$ ShowRowGrandTotals��$ 
ShowRowTotals��	-$!
Separator4��$$ ShowGrandTotalsForSingleValues��$ ShowTotalsForSingleValues��
$"ItemShowPrefilter��
$"ItemHidePrefilter��
$"ItemRefreshData��
$"ItemShowFieldList��
$"
ItemHideField��
$"ItemFieldOrder��!�<local:PivotGridDemoModule x:Class="PivotGridDemo.PivotGrid.ContextMenu"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:PivotGridDemo.PivotGrid"
    xmlns:dxpg="http://schemas.devexpress.com/winfx/2008/xaml/pivotgrid"
    xmlns:dxb="http://schemas.devexpress.com/winfx/2008/xaml/bars"
    xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
    xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
    xmlns:dxdb="http://schemas.devexpress.com/winfx/2008/xaml/demobase"
    Height="300" Width="300">

    <dxdb:DemoModuleControl>
        <dxb:BarManager Name="barManager">
            <dxb:BarManager.Items>
                <dxb:BarCheckItem Name="ShowColumnGrandTotalHeader"  IsChecked="{Binding ElementName=pivotGrid, Path=ShowColumnGrandTotalHeader, Mode=TwoWay}" Content="Show Column Grand Total Header" />
                <dxb:BarCheckItem Name="ShowColumnGrandTotals"  IsChecked="{Binding ElementName=pivotGrid, Path=ShowColumnGrandTotals, Mode=TwoWay}" Content="Show Column Grand Totals" />
                <dxb:BarCheckItem Name="ShowColumnTotals" IsChecked="{Binding ElementName=pivotGrid, Path=ShowColumnTotals, Mode=TwoWay}" Content="Show Column Totals" />

                <dxb:BarCheckItem Name="ShowRowGrandTotalHeader"  IsChecked="{Binding ElementName=pivotGrid, Path=ShowRowGrandTotalHeader, Mode=TwoWay}" Content="Show Row Grand Total Header" />
                <dxb:BarCheckItem Name="ShowRowGrandTotals"  IsChecked="{Binding ElementName=pivotGrid, Path=ShowRowGrandTotals, Mode=TwoWay}" Content="Show Row Grand Totals" />
                <dxb:BarCheckItem Name="ShowRowTotals" IsChecked="{Binding ElementName=pivotGrid, Path=ShowRowTotals, Mode=TwoWay}" Content="Show Row Totals" />

                <dxb:BarCheckItem Name="ShowGrandTotalsForSingleValues"  IsChecked="{Binding ElementName=pivotGrid, Path=ShowGrandTotalsForSingleValues, Mode=TwoWay}" Content="Show Grand Totals For Single Values" />
                <dxb:BarCheckItem Name="ShowTotalsForSingleValues"  IsChecked="{Binding ElementName=pivotGrid, Path=ShowTotalsForSingleValues, Mode=TwoWay}" Content="Show Totals For Single Values" />

            </dxb:BarManager.Items>
            <dxpg:PivotGridControl x:Name="pivotGrid" local:FieldAreaHelper.FixAreas="True" CustomSummary="OnPivotGridCustomSummary" PopupMenuShowing="OnPivotGridShowMenu"
                               RowTreeWidth="305" ShowBorder="False" VerticalAlignment="Stretch" ShowColumnGrandTotals="False" ShowFilterHeaders="False"
                               DataFieldAreaIndex="2" DataFieldArea="ColumnArea" DataFieldCaption="Data" SummaryDataSourceFieldNaming="FieldName" Loaded="pivotGrid_Loaded">
                <dxpg:PivotGridControl.Fields>
                    <dxpg:PivotGridField x:Name="fieldProduct" FieldName="ProductName" Area="RowArea" AreaIndex="1" Width="130" Caption="Product Name" />
                    <dxpg:PivotGridField x:Name="fieldCategory" FieldName="CategoryName" Area="RowArea" AreaIndex="0" Width="130" Caption="Category Name" />
                    <dxpg:PivotGridField x:Name="fieldYear" FieldName="OrderDate" Area="ColumnArea" GroupInterval="DateYear" AreaIndex="0" Width="80" Caption="Year" />
                    <dxpg:PivotGridField x:Name="fieldQuantity" FieldName="Quantity" SummaryType="Sum" ShowSummaryTypeName="True" AreaIndex="1" Area="DataArea"
                                 Width="70" Caption="Quantity" />
                    <dxpg:PivotGridField x:Name="fieldDiscount" FieldName="Discount" SummaryType="Average" ShowSummaryTypeName="True" AreaIndex="2" Area="DataArea"
                                 Width="70" Caption="Discount" CellFormat="p" ValueFormat="p" />
                    <dxpg:PivotGridField x:Name="fieldUnitPrice" FieldName="UnitPrice" SummaryType="Max" ShowSummaryTypeName="True" AreaIndex="0" Area="DataArea"
                                 Width="130" Caption="Unit Price" />
                </dxpg:PivotGridControl.Fields>
                <dxpg:PivotGridControl.HeaderAreaMenuCustomizations>
                    <dxb:BarItemLinkSeparator />
                    <dxb:BarSubItem Content="Totals">
                        <dxb:BarSubItem.ItemLinks>
                            <dxb:BarCheckItemLink BarItemName="ShowColumnGrandTotalHeader" />
                            <dxb:BarCheckItemLink BarItemName="ShowColumnGrandTotals" />
                            <dxb:BarCheckItemLink BarItemName="ShowColumnTotals" />
                            <dxb:BarItemLinkSeparator x:Name="Separator1" />
                            <dxb:BarCheckItemLink BarItemName="ShowRowGrandTotalHeader" />
                            <dxb:BarCheckItemLink BarItemName="ShowRowGrandTotals" />
                            <dxb:BarCheckItemLink BarItemName="ShowRowTotals" />
                            <dxb:BarItemLinkSeparator x:Name="Separator2" />
                            <dxb:BarCheckItemLink BarItemName="ShowGrandTotalsForSingleValues" />
                            <dxb:BarCheckItemLink BarItemName="ShowTotalsForSingleValues" />
                        </dxb:BarSubItem.ItemLinks>
                    </dxb:BarSubItem>
                    <dxb:RemoveBarItemAndLinkAction ItemName="ItemShowPrefilter" />
                    <dxb:RemoveBarItemAndLinkAction ItemName="ItemHidePrefilter" />
                    <dxb:RemoveBarItemAndLinkAction ItemName="ItemRefreshData" />
                    <dxb:RemoveBarItemAndLinkAction ItemName="ItemShowFieldList" />
                </dxpg:PivotGridControl.HeaderAreaMenuCustomizations>
                <dxpg:PivotGridControl.HeaderMenuCustomizations>
                    <dxb:BarItemLinkSeparator />
                    <dxb:BarSubItem Content="Totals">
                        <dxb:BarSubItem.ItemLinks>
                            <dxb:BarCheckItemLink BarItemName="ShowColumnGrandTotalHeader" />
                            <dxb:BarCheckItemLink BarItemName="ShowColumnGrandTotals" />
                            <dxb:BarCheckItemLink BarItemName="ShowColumnTotals" />
                            <dxb:BarItemLinkSeparator x:Name="Separator3" />
                            <dxb:BarCheckItemLink BarItemName="ShowRowGrandTotalHeader" />
                            <dxb:BarCheckItemLink BarItemName="ShowRowGrandTotals" />
                            <dxb:BarCheckItemLink BarItemName="ShowRowTotals" />
                            <dxb:BarItemLinkSeparator x:Name="Separator4" />
                            <dxb:BarCheckItemLink BarItemName="ShowGrandTotalsForSingleValues" />
                            <dxb:BarCheckItemLink BarItemName="ShowTotalsForSingleValues" />
                        </dxb:BarSubItem.ItemLinks>
                    </dxb:BarSubItem>
                    <dxb:RemoveBarItemAndLinkAction ItemName="ItemShowPrefilter" />
                    <dxb:RemoveBarItemAndLinkAction ItemName="ItemHidePrefilter" />
                    <dxb:RemoveBarItemAndLinkAction ItemName="ItemRefreshData" />
                    <dxb:RemoveBarItemAndLinkAction ItemName="ItemShowFieldList" />
                    <dxb:RemoveBarItemAndLinkAction ItemName="ItemHideField" />
                    <dxb:RemoveBarItemAndLinkAction ItemName="ItemFieldOrder" />
                </dxpg:PivotGridControl.HeaderMenuCustomizations>
            </dxpg:PivotGridControl>
        </dxb:BarManager>
    </dxdb:DemoModuleControl>
</local:PivotGridDemoModule>!�using System;
using System.Windows;
using DevExpress.Xpf.DemoBase;
using DevExpress.Xpf.PivotGrid;
using System.Windows.Data;
using System.Windows.Media;
using System.Windows.Markup;
using System.Windows.Controls;
using DevExpress.Data.Mask;
using DevExpress.Xpf.Bars;
using DevExpress.Xpf.Core.Commands;

namespace PivotGridDemo.PivotGrid {
    public partial class ContextMenu: PivotGridDemoModule {
        public ContextMenu() {
            InitializeComponent();
            pivotGrid.BeginUpdate();
            pivotGrid.DataSource = NWindData.SalesPerson;
            pivotGrid.EndUpdate();
        }
        void pivotGrid_Loaded(object sender, RoutedEventArgs e) {
            pivotGrid.BestFit(FieldArea.ColumnArea, true, false);
        }

        void OnPivotGridCustomSummary(object sender, PivotCustomSummaryEventArgs e) {
            e.CustomValue = e.SummaryValue.Summary;
        }

        void OnPivotGridShowMenu(object sender, PopupMenuShowingEventArgs e) {
            if(e.MenuType.Equals(PivotGridMenuType.Header) && e.GetFieldInfo().Field.Area == FieldArea.DataArea) {
                e.Customizations.Add(new BarItemLinkSeparator());
                BarSubItem item = new BarSubItem() { Content = "Summary Type" };
                e.Customizations.Add(item);
                Array arr = EnumHelper.GetValues(typeof(FieldSummaryType));
                foreach(FieldSummaryType type in arr)
                  item.ItemLinks.Add(new BarButtonItem() {
                        Name = "item" + type.ToString(),
                        Content = type.ToString(),
                        CommandParameter = new FieldSummaryItem() { Type = type, Field = e.GetFieldInfo().Field },
                        Command = new DelegateCommand<FieldSummaryItem>(SetFieldSummaryType, CanSetFieldSummaryType)
                    });
            }
        }

        void SetFieldSummaryType(FieldSummaryItem item) {
            item.Field.SummaryType = item.Type;
            item.Field.CellFormat = GetFormat(item.Type, item.Field);
            pivotGrid.BestFit(FieldArea.ColumnArea, true, false);
        }

        string GetFormat(FieldSummaryType fieldSummaryType, PivotGridField field) {
            if(field == fieldQuantity)
                return "";
            switch(fieldSummaryType){
                case FieldSummaryType.Average:
                case FieldSummaryType.Sum:
                case FieldSummaryType.Custom:
                case FieldSummaryType.Max:
                case FieldSummaryType.Min:
                    return "c";
                case FieldSummaryType.Count:
                    return "";
                case FieldSummaryType.StdDev:
                case FieldSummaryType.StdDevp:
                case FieldSummaryType.Var:
                case FieldSummaryType.Varp:
                    return "p";
            }
            return string.Empty;
        }

        bool CanSetFieldSummaryType(FieldSummaryItem item) { return item.Field.SummaryType != item.Type; }
    }

    public class FieldSummaryItem {

        public FieldSummaryItem() { }

        public PivotGridField Field { get; set; }
        public FieldSummaryType Type { get; set; }
    }
}!MSBAML```����OKmscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0891&clr-namespace:System;assembly=mscorlibSystemI2clr-namespace:System.Collections;assembly=mscorlibSystem.CollectionsIEPivotGridDemo, Version=13.1.4.0, Culture=neutral, PublicKeyToken=nullA%clr-namespace:PivotGridDemo.PivotGridPivotGridDemo.PivotGrid.(PivotGridDemo.PivotGrid.CustomAppearance\XPresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNWindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35WSPresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35D9http://schemas.microsoft.com/winfx/2006/xaml/presentationRNSystem.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:x,http://schemas.microsoft.com/winfx/2006/xaml6sys&clr-namespace:System;assembly=mscorlibJcollections2clr-namespace:System.Collections;assembly=mscorlib7local%clr-namespace:PivotGridDemo.PivotGridfbDevExpress.Xpf.PivotGrid.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aBdxpg7http://schemas.devexpress.com/winfx/2008/xaml/pivotgrida]DevExpress.Xpf.Core.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a?dxe5http://schemas.devexpress.com/winfx/2008/xaml/editorseaDevExpress.Xpf.DemoBase.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aAdxdb6http://schemas.devexpress.com/winfx/2008/xaml/demobase;dx2http://schemas.devexpress.com/winfx/2008/xaml/coreLdxpgi@http://schemas.devexpress.com/winfx/2008/xaml/pivotgrid/internal�	Resources
 "SalesPersonFieldHeaderTemplate%DevExpress.Xpf.Core.SimplePanel��Padding�Path�Mode OrderFieldHeaderTemplate��ColorC=DevExpress.Xpf.PivotGrid.Internal.AppearanceThemeKeyExtension��DevExpress.Xpf.Utils.Themes.ThemeKeyExtensionInternalBase`1[[DevExpress.Xpf.PivotGrid.Internal.AppearanceThemeKeys, DevExpress.Xpf.PivotGrid.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a]]ResourceKey:4DevExpress.Xpf.Utils.Themes.ThemeKeyExtensionGeneric	ThemeName��
TargetType+%DevExpress.Xpf.Core.ToggleStateButtonGADevExpress.Xpf.PivotGrid.Internal.ScrollableAreaThemeKeyExtension��DevExpress.Xpf.Utils.Themes.ThemeKeyExtensionInternalBase`1[[DevExpress.Xpf.PivotGrid.Internal.ScrollableAreaThemeKeys, DevExpress.Xpf.PivotGrid.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a]]ResourceKey	�Stretch
J�RenderTransformOrigin
�CursorJ�SnapsToDevicePixels
��EndPoint��
StartPoint�Color
�Offset�Angle�RelativeSource�	Converter/)DevExpress.Xpf.Core.BoolToObjectConverter	TrueValue
FalseValue�%�&	&	(	$CellValueBorderBrush=�$Office2007Silver��)($FieldValueBorderBrush=�$Office2007Silver��)(/$ExpandButtonTemplate=�$Office2007Silver��)��.R�.+��$<��6/PivotGridDemo;component/Images/HeaderIcons/Person.png�$
��None=�$
�Left=�$�Center=�$�	0,-1,2,-1q���$�	textBlock��$18,0,0,0q�$�Right=����$DisplayText�$OneWay=���$ActualHeaderContentStyle���.R�.+��$;��5/PivotGridDemo;component/Images/HeaderIcons/Order.png�$
��None=�$
�Left=�$�Center=�$�	0,-1,2,-1q���$�	textBlock��$18,0,0,0q�$�Right=����$DisplayText�$OneWay=���$ActualHeaderContentStyle���$
#373737����$
#2D2D2D����".R�$
�0,1,0,0q�.+�F�$
	Fill=�$
0.5, 0.5&�4����?)�
��?)@�р��)�;р��)�X,�?)�
�$�Center=�$
�0,0,0,0q�$�Center=�$
Hand��$�9��$�9��.����$
1,0.5&�$0,0.5&�.��$
#E0E0E0��$0Q��$
#AFAFAF��$1Q�z��ExpandButtonRotate2���$	IsChecked���*TemplatedParent+$90��$0��.�/	)DevExpress.Xpf.DemoBase.DemoModuleControl		Content./
)DevExpress.Xpf.PivotGrid.PivotGridControl
-
Name$	pivotGrid��-'PivotGridDemo.PivotGrid.FieldAreaHelperFixAreas.& DevExpress.Xpf.Core.ThemeManager	ThemeName0
*DevExpress.Xpf.Core.ThemeNameTypeConverter$Office2007Silver

FieldListStyle$	Excel2007=�

SelectMode$
None=�
RowTreeWidth$	187���#505050

ShowBorder.
FocusedCellU	QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a#	System.Drawing.PointConverter$
4,10
CellBackground�#414141 
CellTotalBackground �#414146!
CellForeground!�#B4B4B4"
CellTotalForeground"�#B4B4B4#
CellSelectedBackground#�#5A5A5A"$
CellTotalSelectedBackground$�#5A5A5F%
CellSelectedForeground%�#DCDCDC"&
CellTotalSelectedForeground&�#DCDCDC'
ValueBackground'�#373737(
ValueTotalBackground(�#3F3F3F)
ValueForeground)�#B4B4B4*
ValueTotalForeground*�#B4B4B4+
ValueSelectedBackground+�#575757#,
ValueTotalSelectedBackground,�#3F3F44-
ValueSelectedForeground-�#DCDCDC#.
ValueTotalSelectedForeground.�#DCDCDC/
ShowFilterHeaders/.0
ShowDataHeaders0.1
ShowColumnHeaders1.2
ShowRowHeaders2.3
ShowColumnGrandTotals3.
4
Fields4-'DevExpress.Xpf.PivotGrid.PivotGridField-5Name$5fieldOrderYear��6	FieldName$6	OrderDate��7Area$7
FilterArea=�8	AreaIndex$80�9
GroupInterval$9DateYear=�:Caption$:
Order Year��;Visible;.-$5fieldOrderQuarter��$6	OrderDate��$
7RowArea=�$80�$9DateQuarter=�$:
Order Quarter��<ValueFormat$<Quarter {0}��;.-$5fieldCategoryName��$6CategoryName��$
7RowArea=�$80�$:
Category Name��-$5fieldProductName��$6ProductName��$
7RowArea=�$81�$:Product Name��-$5fieldCountry��$
6Country��$7
ColumnArea=�$80�$
:Country��;.-$5fieldSalesPerson��$6Sales Person��$7
ColumnArea=�$81�$:Sales Person��=HeaderTemplate#=[>HeaderListTemplate#>[-$5fieldOrderID��$
6OrderID��$7
FilterArea=�$:Order ID��;.#=[#>[-	$5fieldOrderAmount��$6Extended Price��$7DataArea=�$80�?
CellFormat$?c��$:Order Amount��-
$5
fieldQuantity��$6Quantity��$7DataArea=�$:Quantity��;. @
FocusedCellBorderTemplate@��.R���A�StrokeDashArray$	A2 2R����#DCDCDC$��1��!<local:PivotGridDemoModule x:Class="PivotGridDemo.PivotGrid.CustomAppearance"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:sys="clr-namespace:System;assembly=mscorlib"
    xmlns:collections="clr-namespace:System.Collections;assembly=mscorlib"
    xmlns:local="clr-namespace:PivotGridDemo.PivotGrid"
    xmlns:dxpg="http://schemas.devexpress.com/winfx/2008/xaml/pivotgrid"
    xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
    xmlns:dxdb="http://schemas.devexpress.com/winfx/2008/xaml/demobase"
    xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
    xmlns:dxpgi="http://schemas.devexpress.com/winfx/2008/xaml/pivotgrid/internal">
    <local:PivotGridDemoModule.Resources>
        <ResourceDictionary>
            <DataTemplate x:Key="SalesPersonFieldHeaderTemplate">
                <dx:SimplePanel>
                    <Image Source="/PivotGridDemo;component/Images/HeaderIcons/Person.png" Stretch="None" HorizontalAlignment="Left"
                           VerticalAlignment="Center" Margin="0,-1,2,-1" />
                    <TextBlock Name="textBlock" Padding="18,0,0,0" Text="{Binding Path=DisplayText, Mode=OneWay}" HorizontalAlignment="Right"
                            Style="{Binding Path=ActualHeaderContentStyle}" />
                </dx:SimplePanel>
            </DataTemplate>
            <DataTemplate x:Key="OrderFieldHeaderTemplate">
                <dx:SimplePanel>
                    <Image Source="/PivotGridDemo;component/Images/HeaderIcons/Order.png" Stretch="None" HorizontalAlignment="Left"
                           VerticalAlignment="Center" Margin="0,-1,2,-1" />
                    <TextBlock Name="textBlock" Padding="18,0,0,0" Text="{Binding Path=DisplayText, Mode=OneWay}" HorizontalAlignment="Right"
                           Style="{Binding Path=ActualHeaderContentStyle}" />
                </dx:SimplePanel>
            </DataTemplate>
            <SolidColorBrush x:Key="{dxpgi:AppearanceThemeKey ResourceKey=CellValueBorderBrush, ThemeName=Office2007Silver}" Color="#373737" />
            <SolidColorBrush x:Key="{dxpgi:AppearanceThemeKey ResourceKey=FieldValueBorderBrush, ThemeName=Office2007Silver}" Color="#2D2D2D" />
            <ControlTemplate x:Key="{dxpgi:ScrollableAreaThemeKey ResourceKey=ExpandButtonTemplate, ThemeName=Office2007Silver}" TargetType="{x:Type dx:ToggleStateButton}">
                <dx:SimplePanel Margin="0,1,0,0">
                    <Path Stretch="Fill" RenderTransformOrigin="0.5, 0.5" Data="F1 M 692,518L 692,529L 702,524L 702,523L 692,518 Z "
                      HorizontalAlignment="Center" Margin="0,0,0,0" VerticalAlignment="Center" Cursor="Hand" Width="9" Height="9" SnapsToDevicePixels="True">
                        <Path.Fill>
                            <LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5">
                                <GradientStop Color="#E0E0E0" Offset="0" />
                                <GradientStop Color="#AFAFAF" Offset="1" />
                            </LinearGradientBrush>
                        </Path.Fill>
                        <Path.RenderTransform>
                            <RotateTransform x:Name="ExpandButtonRotate2">
                                <RotateTransform.Angle>
                                    <Binding Path="IsChecked" RelativeSource="{RelativeSource TemplatedParent}">
                                        <Binding.Converter>
                                            <dx:BoolToObjectConverter TrueValue="90" FalseValue="0"/>
                                        </Binding.Converter>
                                    </Binding>
                                </RotateTransform.Angle>
                            </RotateTransform>
                        </Path.RenderTransform>
                    </Path>
                </dx:SimplePanel>
            </ControlTemplate>
        </ResourceDictionary>
    </local:PivotGridDemoModule.Resources>
    <dxdb:DemoModuleControl>
        <dxpg:PivotGridControl local:FieldAreaHelper.FixAreas="True" dx:ThemeManager.ThemeName="Office2007Silver" x:Name="pivotGrid"
                               FieldListStyle="Excel2007" SelectMode="None" RowTreeWidth="187"
                               Background="#505050" ShowBorder="False" FocusedCell="4,10"

                               CellBackground="#414141" CellTotalBackground="#414146"
                               CellForeground="#B4B4B4" CellTotalForeground="#B4B4B4"
                               CellSelectedBackground="#5A5A5A" CellTotalSelectedBackground="#5A5A5F"
                               CellSelectedForeground="#DCDCDC" CellTotalSelectedForeground="#DCDCDC"

                               ValueBackground="#373737"  ValueTotalBackground="#3F3F3F"
                               ValueForeground="#B4B4B4"  ValueTotalForeground="#B4B4B4"
                               ValueSelectedBackground="#575757"  ValueTotalSelectedBackground="#3F3F44"
                               ValueSelectedForeground="#DCDCDC"  ValueTotalSelectedForeground="#DCDCDC"

                               CustomCellAppearance="OnCustomCellAppearance" CustomValueAppearance="OnCustomValueAppearance"
                               ShowFilterHeaders="False" ShowDataHeaders="False" ShowColumnHeaders="False" ShowRowHeaders="False"
                               ShowColumnGrandTotals="False">
            <dxpg:PivotGridControl.Fields>
                <dxpg:PivotGridField x:Name="fieldOrderYear" FieldName="OrderDate"
                                 Area="FilterArea" AreaIndex="0" GroupInterval="DateYear" Caption="Order Year"  Visible="False" />
                <dxpg:PivotGridField x:Name="fieldOrderQuarter" FieldName="OrderDate"
                                 Area="RowArea" AreaIndex="0" GroupInterval="DateQuarter"
                                 Caption="Order Quarter" ValueFormat="Quarter {0}" Visible="False" />
                <dxpg:PivotGridField x:Name="fieldCategoryName" FieldName="CategoryName" Area="RowArea" AreaIndex="0" Caption="Category Name" />
                <dxpg:PivotGridField x:Name="fieldProductName" FieldName="ProductName" Area="RowArea" AreaIndex="1" Caption="Product Name"
                                 />
                <dxpg:PivotGridField x:Name="fieldCountry" FieldName="Country" Area="ColumnArea" AreaIndex="0" Caption="Country"  Visible="False" />
                <dxpg:PivotGridField x:Name="fieldSalesPerson" FieldName="Sales Person" Area="ColumnArea" AreaIndex="1" Caption="Sales Person"
                                 HeaderTemplate="{StaticResource SalesPersonFieldHeaderTemplate}" HeaderListTemplate="{StaticResource SalesPersonFieldHeaderTemplate}" />
                <dxpg:PivotGridField x:Name="fieldOrderID" FieldName="OrderID" Area="FilterArea" Caption="Order ID" Visible="False"
                                 HeaderTemplate="{StaticResource OrderFieldHeaderTemplate}" HeaderListTemplate="{StaticResource OrderFieldHeaderTemplate}" />
                <dxpg:PivotGridField x:Name="fieldOrderAmount" FieldName="Extended Price" Area="DataArea" AreaIndex="0" CellFormat="c"
                                 Caption="Order Amount" />
                <dxpg:PivotGridField x:Name="fieldQuantity" FieldName="Quantity" Area="DataArea" Caption="Quantity" Visible="False" />
            </dxpg:PivotGridControl.Fields>
            <dxpg:PivotGridControl.FocusedCellBorderTemplate>
                <ControlTemplate>
                    <Rectangle StrokeDashArray="2 2" Stroke="#DCDCDC" StrokeThickness="1" />
                </ControlTemplate>
            </dxpg:PivotGridControl.FocusedCellBorderTemplate>
        </dxpg:PivotGridControl>
    </dxdb:DemoModuleControl>
</local:PivotGridDemoModule>!ausing System;
using System.Windows;
using DevExpress.Xpf.DemoBase;
using DevExpress.Xpf.PivotGrid;
using DevExpress.Xpf.Editors;
using DevExpress.Xpf.Core;
using System.Windows.Markup;
using System.Windows.Data;
using DevExpress.Xpf.Editors.Helpers;
using System.Windows.Media;

namespace PivotGridDemo.PivotGrid {
    public partial class CustomAppearance : PivotGridDemoModule {
        public CustomAppearance() {
            InitializeComponent();
            pivotGrid.DataSource = NWindData.SalesPerson;
            pivotGrid.BeginUpdate();
            fieldCategoryName.FilterValues.FilterType = FieldFilterType.Included;
            fieldCategoryName.FilterValues.Add("Grains/Cereals");
            fieldCategoryName.FilterValues.Add("Meat/Poultry");
            fieldCategoryName.FilterValues.Add("Produce");
            fieldSalesPerson.FilterValues.Add("Robert King");
            fieldSalesPerson.FilterValues.Add("Steven Buchanan");
            pivotGrid.EndUpdate();
            pivotGrid.FocusedCellChanged += new RoutedEventHandler(OnFocusedCellChanged);
            Loaded += new RoutedEventHandler(OnModuleLoaded);
        }

        public override bool AllowSwitchingTheme { get { return false; } }

        void OnModuleLoaded(object sender, RoutedEventArgs e) {
            pivotGrid.BestFit(fieldSalesPerson, true, false);
        }

        void OnFocusedCellChanged(object sender, RoutedEventArgs e) {
            pivotGrid.RaiseEvent(new PivotBrushChangedEventArgs(PivotGridControl.BrushChangedEvent, pivotGrid, PivotBrushType.CellBrush));
            pivotGrid.RaiseEvent(new PivotBrushChangedEventArgs(PivotGridControl.BrushChangedEvent, pivotGrid, PivotBrushType.ValueBrush));
        }

        void OnCustomCellAppearance(object sender, PivotCustomCellAppearanceEventArgs e) {
            bool columnSelected = e.RowIndex == pivotGrid.FocusedCell.Y;
            bool rowSelected = e.ColumnIndex == pivotGrid.FocusedCell.X;
            if(columnSelected && !rowSelected || !columnSelected && rowSelected) {
                CellMode mode = CellMode.Selected;
                if(e.RowValueType > 0 || e.ColumnValueType > 0)
                    mode = mode | CellMode.Tolal;
                e.Background = GetActualCellBackgroundBrush(mode);
                e.Foreground = GetActualCellForegroundBrush(mode);
            }
        }

        void OnCustomValueAppearance(object sender, PivotCustomValueAppearanceEventArgs e) {
            if(e.MaxIndex != e.MinIndex)
                return;
            if(e.IsColumn && e.MinIndex == pivotGrid.FocusedCell.X ||
                !e.IsColumn && e.MinIndex == pivotGrid.FocusedCell.Y)
                e.Background = pivotGrid.ValueSelectedBackground;
        }

        Brush GetActualCellForegroundBrush(CellMode actualMode) {
            switch(actualMode) {
                case CellMode.None:
                    return pivotGrid.CellForeground;
                case CellMode.Selected:
                    return pivotGrid.CellSelectedForeground;
                case CellMode.Tolal:
                    return pivotGrid.CellTotalForeground;
                case CellMode.TotalSelected:
                    return pivotGrid.CellTotalSelectedForeground;
                default:
                    throw new Exception("CellMode");
            }
        }

        Brush GetActualCellBackgroundBrush(CellMode actualMode) {
            switch(actualMode) {
                case CellMode.None:
                    return pivotGrid.CellBackground;
                case CellMode.Selected:
                    return pivotGrid.CellSelectedBackground;
                case CellMode.Tolal:
                    return pivotGrid.CellTotalBackground;
                case CellMode.TotalSelected:
                    return pivotGrid.CellTotalSelectedBackground;
                default:
                    throw new Exception("CellMode");
            }
        }

        public enum CellMode {
            None = 0,
            Tolal = 1,
            Selected = 2,
            TotalSelected = Tolal | Selected,
        }
    }
}!�MSBAML```����OKmscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0891&clr-namespace:System;assembly=mscorlibSystemI2clr-namespace:System.Collections;assembly=mscorlibSystem.CollectionsIEPivotGridDemo, Version=13.1.4.0, Culture=neutral, PublicKeyToken=nullA%clr-namespace:PivotGridDemo.PivotGridPivotGridDemo.PivotGrid-'PivotGridDemo.PivotGrid.CustomChartData\XPresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNWindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35WSPresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35D9http://schemas.microsoft.com/winfx/2006/xaml/presentationRNSystem.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:x,http://schemas.microsoft.com/winfx/2006/xaml6sys&clr-namespace:System;assembly=mscorlibJcollections2clr-namespace:System.Collections;assembly=mscorlib7local%clr-namespace:PivotGridDemo.PivotGridfbDevExpress.Xpf.PivotGrid.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aBdxpg7http://schemas.devexpress.com/winfx/2008/xaml/pivotgrida]DevExpress.Xpf.Core.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a?dxe5http://schemas.devexpress.com/winfx/2008/xaml/editorsc_DevExpress.Xpf.Charts.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a>dxc4http://schemas.devexpress.com/winfx/2008/xaml/chartse	aDevExpress.Xpf.DemoBase.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aAdxdb6http://schemas.devexpress.com/winfx/2008/xaml/demobase	;dx2http://schemas.devexpress.com/winfx/2008/xaml/core.�/	)DevExpress.Xpf.DemoBase.DemoModuleControlOptionsContent��-��Name$spLayout����Orientation$Vertical=�$	�220��.+�$DevExpress.Xpf.Core.GroupFrame$��
Grid Settings��$
�0,0,0,4q�.���.+���$
�4,0,0,4q�$�Center=�$
�Stretch=�Row Field Values Export Rule:)#DevExpress.Xpf.Editors.ComboBoxEdit-$ �cbRowFieldValuesExportRule��$�Center=�$
�Stretch=�'!DevExpress.Xpf.Editors.ButtonEditIsTextEditable.$
�4,0,0,4q���$
�4,0,0,4q�$�Center=�Export cell values less than:A�$
�0,4,0,0q�A�Columns$2�A�Rows$1�.+�%DevExpress.Xpf.Editors.SpinEdit-$�seCellZeroValueThreshold��Value$	100~�$�Center=�$
�Stretch=�$
�4,0,0,4q�IsFloatValue.��$
�4,0,0,4q�$�Center=�$
�Left=�as zero values$��Chart Settings��$
�0,0,0,4q�.���.+���$
�4,0,0,4q�$�Center=�
Chart Type:-$�cbChartType��$�Center=�$
�Stretch=�.$
�4,0,0,4q���$
�4,0,0,4q�$�Center=�Date Measure Unit:-$�cbChartDateMeasureUnit��$�Center=�$
�Stretch=�.$
�4,0,0,4q�& DevExpress.Xpf.Editors.CheckEdit-$�ceShowPointsLabels��	IsChecked$FalseY�	Content)#DevExpress.Xpf.Core.ObjectConverter$	Show Point Labels$
�4,4,0,0q�
Content.
��RowDefinitions�$��*��$��*�.+�/)DevExpress.Xpf.PivotGrid.PivotGridControl-Name$	pivotGrid��-	'PivotGridDemo.PivotGrid.FieldAreaHelper
	FixAreas
. ChartProvideDataByColumns."ChartFieldValuesProvideMode$Value=�%ChartProvideColumnCustomTotals.$ChartProvideColumnGrandTotals.ChartProvideColumnTotals.!ChartProvideRowGrandTotals.ShowColumnGrandTotals.ShowColumnTotals.ShowFilterHeaders.ShowRowGrandTotals.
Fields-
'DevExpress.Xpf.PivotGrid.PivotGridField
-
Name$fieldCategoryName��
	FieldName$CategoryName��
Area$
RowArea=�
	AreaIndex$0�
AllowedAreas$
RowArea=�
Caption$Category��
	AllowDrag$FalseY� 
ShowCustomTotals .!
ShowGrandTotal!."

ShowTotals".#
Width$	#155Q�
-	$fieldExtendedPrice��$Extended Price��$DataArea=�$0�$DataArea=�$FalseY�$

CellFormat$$c��
-
$fieldProductName��$ProductName��$
RowArea=�$1�$
RowArea=�$FalseY�$	#155Q�$Product Name��
-$	fieldYear��$	OrderDate��%
UnboundFieldName$%	fieldYear��$
ColumnArea=�$0�$
ColumnArea=�&

GroupInterval$&DateYear=�$
Year��$FalseY�'
AllowExpand$'FalseY�$#80Q� .!.".(
Group(�)�ElementName$)PivotGridGroup1��
-$fieldQuarter��$	OrderDate��$%fieldQuarter��$
ColumnArea=�$1�$
ColumnArea=�$&DateQuarter=�$
Quarter��$'FalseY�$#80Q�*
ValueFormat$
*Qtr {0}�� .!.".(�$)PivotGridGroup1��
-
$
fieldMonth��$	OrderDate��$%
fieldMonth��$
ColumnArea=�$2�$
ColumnArea=�$&	DateMonth=�$Month��$'FalseY�$#80Q� .!.".(�$)PivotGridGroup1��
+Groups+-'DevExpress.Xpf.PivotGrid.PivotGridGroup-,Name$,PivotGridGroup1��-Caption$-DateTimeFields��("DevExpress.Xpf.Charts.ChartControl-$�chartControl��$��1�$
�0,4,0,0q�.
DataSource.�$)	pivotGrid��/�Path$/ChartDataSource�
0Legend0"
DevExpress.Xpf.Charts.Legend
!�<local:PivotGridDemoModule x:Class="PivotGridDemo.PivotGrid.CustomChartData"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:sys="clr-namespace:System;assembly=mscorlib"
    xmlns:collections="clr-namespace:System.Collections;assembly=mscorlib"
    xmlns:local="clr-namespace:PivotGridDemo.PivotGrid"
    xmlns:dxpg="http://schemas.devexpress.com/winfx/2008/xaml/pivotgrid"
    xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
    xmlns:dxc="http://schemas.devexpress.com/winfx/2008/xaml/charts"
    xmlns:dxdb="http://schemas.devexpress.com/winfx/2008/xaml/demobase"
    xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core">

    <dxdb:DemoModuleControl>
        <dxdb:DemoModuleControl.OptionsContent>
            <StackPanel x:Name="spLayout" Orientation="Vertical" Width="220">
                <dx:GroupFrame Header="Grid Settings" Margin="0,0,0,4">
                    <StackPanel>
                        <TextBlock Margin="4,0,0,4" VerticalAlignment="Center" HorizontalAlignment="Stretch">Row Field Values Export Rule:</TextBlock>
                        <dxe:ComboBoxEdit Name="cbRowFieldValuesExportRule" VerticalAlignment="Center" HorizontalAlignment="Stretch"
                                      IsTextEditable="False" Margin="4,0,0,4" SelectedIndexChanged="cbRowFieldValuesExportRule_SelectedIndexChanged" />
                        <TextBlock Margin="4,0,0,4" VerticalAlignment="Center">Export cell values less than:</TextBlock>
                        <UniformGrid Margin="0,4,0,0" Columns="2" Rows="1">
                            <dxe:SpinEdit Name="seCellZeroValueThreshold" Value="100" VerticalAlignment="Center" HorizontalAlignment="Stretch"
                                      Margin="4,0,0,4" IsFloatValue="False" EditValueChanged="seCellZeroValueThreshold_EditValueChanged" />
                            <TextBlock Margin="4,0,0,4" VerticalAlignment="Center" HorizontalAlignment="Left">as zero values</TextBlock>
                        </UniformGrid>
                    </StackPanel>
                </dx:GroupFrame>
                <dx:GroupFrame Header="Chart Settings" Margin="0,0,0,4">
                    <StackPanel>
                        <TextBlock Margin="4,0,0,4" VerticalAlignment="Center">Chart Type:</TextBlock>
                        <dxe:ComboBoxEdit Name="cbChartType" VerticalAlignment="Center" HorizontalAlignment="Stretch"
                                      IsTextEditable="False" Margin="4,0,0,4" SelectedIndexChanged="cbChartType_SelectedIndexChanged" />
                        <TextBlock Margin="4,0,0,4" VerticalAlignment="Center">Date Measure Unit:</TextBlock>
                        <dxe:ComboBoxEdit Name="cbChartDateMeasureUnit" VerticalAlignment="Center" HorizontalAlignment="Stretch"
                                      IsTextEditable="False" Margin="4,0,0,4" SelectedIndexChanged="cbChartDateMeasureUnit_SelectedIndexChanged" />
                        <dxe:CheckEdit Name="ceShowPointsLabels" Checked="ceShowPointsLabels_Checked" Unchecked="ceShowPointsLabels_Checked"
                                   IsChecked="False" Content="Show Point Labels" Margin="4,4,0,0" />
                    </StackPanel>
                </dx:GroupFrame>
            </StackPanel>
        </dxdb:DemoModuleControl.OptionsContent>
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="*" />
                <RowDefinition Height="*" />
            </Grid.RowDefinitions>
            <dxpg:PivotGridControl local:FieldAreaHelper.FixAreas="True" x:Name="pivotGrid" ChartProvideDataByColumns="False" ChartFieldValuesProvideMode="Value"
                               ChartProvideColumnCustomTotals="False" ChartProvideColumnGrandTotals="False"
                               ChartProvideColumnTotals="False" ChartProvideRowGrandTotals="False"
                               ShowColumnGrandTotals="False" ShowColumnTotals="False" ShowFilterHeaders="False"
                               ShowRowGrandTotals="False" FieldExpandedInGroupChanged="pivotGrid_FieldExpandedInGroupChanged"
                               CustomChartDataSourceData="pivotGrid_CustomChartDataSourceData">
                <dxpg:PivotGridControl.Fields>
                    <dxpg:PivotGridField x:Name="fieldCategoryName" FieldName="CategoryName" Area="RowArea" AreaIndex="0"
                                     AllowedAreas="RowArea" Caption="Category" AllowDrag="False" ShowCustomTotals="False"
                                     ShowGrandTotal="False" ShowTotals="False" Width="155" />
                    <dxpg:PivotGridField x:Name="fieldExtendedPrice" FieldName="Extended Price" Area="DataArea" AreaIndex="0"
                                     AllowedAreas="DataArea" AllowDrag="False" CellFormat="c" />
                    <dxpg:PivotGridField x:Name="fieldProductName" FieldName="ProductName" Area="RowArea" AreaIndex="1"
                                     AllowedAreas="RowArea" AllowDrag="False" Width="155" Caption="Product Name" />
                    <dxpg:PivotGridField x:Name="fieldYear" FieldName="OrderDate" UnboundFieldName="fieldYear" Area="ColumnArea" AreaIndex="0"
                                     AllowedAreas="ColumnArea" GroupInterval="DateYear" Caption="Year" AllowDrag="False" AllowExpand="False"
                                     Width="80"
                                     Group="{Binding ElementName=PivotGridGroup1}"
                                     ShowCustomTotals="False"
                                     ShowGrandTotal="False" ShowTotals="False" />
                    <dxpg:PivotGridField x:Name="fieldQuarter" FieldName="OrderDate" UnboundFieldName="fieldQuarter" Area="ColumnArea" AreaIndex="1"
                                     AllowedAreas="ColumnArea" GroupInterval="DateQuarter" Caption="Quarter" AllowExpand="False"
                                     Width="80"
                                     ValueFormat="Qtr {0}" Group="{Binding ElementName=PivotGridGroup1}"
                                     ShowCustomTotals="False"
                                     ShowGrandTotal="False" ShowTotals="False" />
                    <dxpg:PivotGridField x:Name="fieldMonth" FieldName="OrderDate" UnboundFieldName="fieldMonth" Area="ColumnArea" AreaIndex="2"
                                     AllowedAreas="ColumnArea" GroupInterval="DateMonth" Caption="Month" AllowExpand="False"
                                     Width="80"
                                     Group="{Binding ElementName=PivotGridGroup1}"
                                     ShowCustomTotals="False"
                                     ShowGrandTotal="False" ShowTotals="False" />

                </dxpg:PivotGridControl.Fields>
                <dxpg:PivotGridControl.Groups>
                    <dxpg:PivotGridGroup x:Name="PivotGridGroup1" Caption="DateTimeFields" />
                </dxpg:PivotGridControl.Groups>
            </dxpg:PivotGridControl>

            <dxc:ChartControl Name="chartControl" Grid.Row="1" DataSource="{Binding ElementName=pivotGrid, Path=ChartDataSource}"
                          Margin="0,4,0,0">
                <dxc:ChartControl.Legend>
                    <dxc:Legend />
                </dxc:ChartControl.Legend>
            </dxc:ChartControl>
        </Grid>
    </dxdb:DemoModuleControl>
</local:PivotGridDemoModule>!$using System;
using System.Windows;
using DevExpress.Xpf.DemoBase;
using DevExpress.Xpf.PivotGrid;
using DevExpress.Xpf.Charts;
using DevExpress.Xpf.Editors;
using DevExpress.Xpf.Core;

namespace PivotGridDemo.PivotGrid {
    public partial class CustomChartData : PivotGridDemoModule {
        enum RowFieldValueExportRule { ProductName = 0, CategoryAndProduct = 1, CategoryEncoded = 2 };
        static string[] Categories = new string[] { "Beverages", "Condiments", "Confections", "Dairy Products",
            "Grains/Cereals", "Meat/Poultry", "Produce", "Seafood" };
        RowFieldValueExportRule rowFieldValueExportRule;

        RowFieldValueExportRule RowExportRule {
            get { return rowFieldValueExportRule; }
            set { rowFieldValueExportRule = value; }
        }
        public CustomChartData() {
            InitializeComponent();
            ChartFactory.InitComboBox(cbChartType, new Type[] { InitDiagram() });
            RowExportRule = RowFieldValueExportRule.ProductName;
            pivotGrid.ChartProvideRowFieldValuesAsType = typeof(string);
            cbRowFieldValuesExportRule.Items.AddRange(new string[] { "ProductName", "Category/ProductName",
                "Encoded Product Category" });
            cbRowFieldValuesExportRule.SelectedIndex = 0;
            pivotGrid.DataSource = NWindData.SalesPerson;
            pivotGrid.MultiSelection.SetSelection(CreateSelectedPoints());
            SetMeasureUnits(DateTimeMeasurementUnit.Year, DateTimeMeasurementUnit.Quarter, DateTimeMeasurementUnit.Month);
            CollapseValues();
        }
        Type InitDiagram() {
            XYDiagram2D xyDiagram = new XYDiagram2D();
            xyDiagram.SeriesDataMember = "Series";
            xyDiagram.AxisX = new AxisX2D();
            xyDiagram.AxisX.DateTimeOptions = new DateTimeOptions();
            xyDiagram.AxisX.DateTimeGridAlignment = DateTimeMeasurementUnit.Year;
            xyDiagram.AxisX.DateTimeMeasureUnit = DateTimeMeasurementUnit.Year;
            xyDiagram.AxisX.Range = new AxisRange();
            xyDiagram.AxisX.Range.SideMarginsEnabled = true;
            xyDiagram.AxisY = new AxisY2D();
            xyDiagram.AxisY.Range = new AxisRange();
            xyDiagram.AxisY.Range.SideMarginsEnabled = true;
            chartControl.Diagram = xyDiagram;
            return chartControl.Diagram.GetType();
        }
        System.Drawing.Point[] CreateSelectedPoints() {
            System.Drawing.Point[] points = new System.Drawing.Point[pivotGrid.ColumnCount * 12];
            for(int i = 0; i < pivotGrid.ColumnCount; i++) {
                for(int j = 0; j < 12; j++)
                    points[i + j * pivotGrid.ColumnCount] = new System.Drawing.Point(i, j + 1);
            }
            return points;
        }
        void SetMeasureUnits(params DateTimeMeasurementUnit[] units) {
            object prevUnit = (cbChartDateMeasureUnit.SelectedItem == null || string.IsNullOrEmpty(cbChartDateMeasureUnit.SelectedItem.ToString())) ?
                null : Enum.Parse(typeof(DateTimeMeasurementUnit), cbChartDateMeasureUnit.SelectedItem.ToString());
            string prevItem = "";
            cbChartDateMeasureUnit.Items.Clear();
            foreach(DateTimeMeasurementUnit unit in units) {
                string unitName = Enum.GetName(typeof(DateTimeMeasurementUnit), unit);
                cbChartDateMeasureUnit.Items.Add(unitName);
                if(prevUnit != null && object.Equals(unit, (DateTimeMeasurementUnit)prevUnit))
                    prevItem = unitName;
            }
            if(!string.IsNullOrEmpty(prevItem))
                cbChartDateMeasureUnit.SelectedItem = prevItem;
            else
                cbChartDateMeasureUnit.SelectedIndex = 0;
        }
        void CollapseValues() {
            fieldCategoryName.CollapseAll();
            fieldCategoryName.ExpandValue("Condiments");
        }
        Char EncodeCategoryName(string categoryName) {
            for(int i = 0; i < Categories.Length; i++) {
                if(Categories[i] == categoryName)
                    return Convert.ToChar(Convert.ToInt32('A') + i);
            }
            return 'Z';
        }
        void cbChartType_SelectedIndexChanged(object sender, RoutedEventArgs e) {
            Series seriesTemplate = ChartFactory.CreateSeriesInstance((Type)((ComboBoxEditItem)cbChartType.SelectedItem).Tag);
            seriesTemplate.ArgumentDataMember = "Arguments";
            seriesTemplate.ArgumentScaleType = ScaleType.DateTime;
            seriesTemplate.ValueDataMember = "Values";
            if(seriesTemplate.Label == null)
                seriesTemplate.Label = new SeriesLabel();
            seriesTemplate.LabelsVisibility = ceShowPointsLabels.IsChecked.HasValue && ceShowPointsLabels.IsChecked.Value;
            if(seriesTemplate.LegendPointOptions == null)
                seriesTemplate.LegendPointOptions = new PointOptions();
            seriesTemplate.LegendPointOptions.PointView = PointView.ArgumentAndValues;
            chartControl.Diagram.SeriesTemplate = seriesTemplate;
        }
        void ceShowPointsLabels_Checked(object sender, RoutedEventArgs e) {
            chartControl.Diagram.SeriesTemplate.LabelsVisibility = ceShowPointsLabels.IsChecked.HasValue && ceShowPointsLabels.IsChecked.Value;
        }
        void cbChartDateMeasureUnit_SelectedIndexChanged(object sender, RoutedEventArgs e) {
            XYDiagram2D diagram = (XYDiagram2D)chartControl.Diagram;
            DateTimeMeasurementUnit unit = (DateTimeMeasurementUnit)Enum.Parse(typeof(DateTimeMeasurementUnit), cbChartDateMeasureUnit.SelectedItem.ToString());
            diagram.AxisX.DateTimeGridAlignment = unit;
            diagram.AxisX.DateTimeMeasureUnit = unit;
            switch(unit) {
                case DateTimeMeasurementUnit.Year:
                    diagram.AxisX.DateTimeOptions.Format = DateTimeFormat.Custom;
                    diagram.AxisX.DateTimeOptions.FormatString = "yyyy";
                    break;
                case DateTimeMeasurementUnit.Quarter:
                    diagram.AxisX.DateTimeOptions.Format = DateTimeFormat.QuarterAndYear;
                    break;
                case DateTimeMeasurementUnit.Month:
                    diagram.AxisX.DateTimeOptions.Format = DateTimeFormat.MonthAndYear;
                    break;
                default:
                    break;
            }
        }
        void pivotGrid_FieldExpandedInGroupChanged(object sender, PivotFieldEventArgs e) {
            if(!fieldYear.ExpandedInFieldsGroup) {
                SetMeasureUnits(DateTimeMeasurementUnit.Year);
                return;
            }
            if(!fieldQuarter.ExpandedInFieldsGroup) {
                SetMeasureUnits(DateTimeMeasurementUnit.Year, DateTimeMeasurementUnit.Quarter);
                return;
            }
            SetMeasureUnits(DateTimeMeasurementUnit.Year, DateTimeMeasurementUnit.Quarter, DateTimeMeasurementUnit.Month);
        }
        void cbRowFieldValuesExportRule_SelectedIndexChanged(object sender, RoutedEventArgs e) {
            RowExportRule = (RowFieldValueExportRule)cbRowFieldValuesExportRule.SelectedIndex;
            pivotGrid.ChartProvideRowFieldValuesAsType = RowExportRule == RowFieldValueExportRule.CategoryEncoded ? typeof(Char) : typeof(string);
            pivotGrid.RefreshData();
        }
        void pivotGrid_CustomChartDataSourceData(object sender, PivotCustomChartDataSourceDataEventArgs e) {
            if(e.ItemType == PivotChartItemType.CellItem) {
                if(e.Value == DBNull.Value || (decimal)e.Value < Convert.ToDecimal(seCellZeroValueThreshold.Value))
                    e.Value = 0;
            }
            if(e.ItemType == PivotChartItemType.RowItem) {
                bool isCategoryNameField = object.Equals(e.FieldValueInfo.Field, fieldCategoryName);
                switch(RowExportRule) {
                    case RowFieldValueExportRule.ProductName:
                        e.Value = isCategoryNameField ? e.FieldValueInfo.Value.ToString() + " Category" : e.FieldValueInfo.Value;
                        break;
                    case RowFieldValueExportRule.CategoryAndProduct:
                        e.Value = isCategoryNameField ? e.FieldValueInfo.Value.ToString() + '/' + "Total" :
                            e.FieldValueInfo.GetHigherLevelFieldValue(fieldCategoryName).ToString() + '/' + e.FieldValueInfo.Value.ToString();
                        break;
                    case RowFieldValueExportRule.CategoryEncoded:
                        string categoryName = isCategoryNameField ?
                            e.FieldValueInfo.Value.ToString() : e.FieldValueInfo.GetHigherLevelFieldValue(fieldCategoryName).ToString();
                        e.Value = EncodeCategoryName(categoryName);
                        break;
                }
            }
        }
        void seCellZeroValueThreshold_EditValueChanged(object sender, EditValueChangedEventArgs e) {
            pivotGrid.RefreshData();
        }
    }
}!�MSBAML```����OKmscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0891&clr-namespace:System;assembly=mscorlibSystemI2clr-namespace:System.Collections;assembly=mscorlibSystem.CollectionsIEPivotGridDemo, Version=13.1.4.0, Culture=neutral, PublicKeyToken=nullA%clr-namespace:PivotGridDemo.PivotGridPivotGridDemo.PivotGrid-'PivotGridDemo.PivotGrid.CustomerReports\XPresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNWindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35WSPresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35D9http://schemas.microsoft.com/winfx/2006/xaml/presentationRNSystem.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:x,http://schemas.microsoft.com/winfx/2006/xaml6sys&clr-namespace:System;assembly=mscorlibJcollections2clr-namespace:System.Collections;assembly=mscorlib7local%clr-namespace:PivotGridDemo.PivotGridfbDevExpress.Xpf.PivotGrid.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aBdxpg7http://schemas.devexpress.com/winfx/2008/xaml/pivotgrida]DevExpress.Xpf.Core.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a?dxe5http://schemas.devexpress.com/winfx/2008/xaml/editorseaDevExpress.Xpf.DemoBase.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aAdxdb6http://schemas.devexpress.com/winfx/2008/xaml/demobase;dx2http://schemas.devexpress.com/winfx/2008/xaml/core.�/)DevExpress.Xpf.DemoBase.DemoModuleControlOptionsContent����Orientation$Vertical=�.+�$DevExpress.Xpf.Core.GroupFrame$��Customer Reports��.�("DevExpress.Xpf.Editors.ListBoxEdit-Name$reportsList��%DevExpress.Xpf.Editors.BaseEdit
ShowBorder.
SelectedIndex$0��Z�
StyleSettings:4DevExpress.Xpf.Editors.RadioListBoxEditStyleSettingsItems��
	Customers����Products (filtering)����Top 2 Products����Top 10 Customers��-$�gbxFiltering��$��Products Filtering��$
�0,5,0,0q�.���.+���ColumnDefinitions��$�2*���$�2*��RowDefinitions��.+���$��Year:��$�Center=�$
�0,0,0,5q�)#DevExpress.Xpf.Editors.ComboBoxEdit-$
�cbeYear��$�1�$�80��'!DevExpress.Xpf.Editors.ButtonEdit	IsTextEditable	.$
�0,0,0,5q���$��1�$��Quarter:��$
�0,5,0,5q�$
�Left=�$�Center=�-$�
cbeQuarter��$��1�$�1�$�80��	.$
�0,5,0,5q�
Content.
/)DevExpress.Xpf.PivotGrid.PivotGridControl-Name$	pivotGrid��-	'PivotGridDemo.PivotGrid.FieldAreaHelper	FixAreas.
DataFieldWidth$
90Q�RowTreeWidth$	225�
ShowBorder.
Fields-
'DevExpress.Xpf.PivotGrid.PivotGridField
-
Name$	fieldYear��
	FieldName$	OrderDate��
Area$
ColumnArea=�

GroupInterval$DateYear=�
Width$80Q�
Caption$
Order Year��
-$fieldQuarter��$	OrderDate��$
ColumnArea=�$DateQuarter=�
ValueFormat$
Qtr {0}��$90Q�$
Order Quarter��
-$fieldCompanyName��$CompanyName��$
RowArea=�$	150Q�$Customer��
-	$fieldProductName��$ProductName��$
RowArea=�$	120Q�$
Product��
-
$fieldProductAmount��$
ProductAmount��$DataArea=�$	150Q�$Product Amount��

CellFormat$c��!*<local:PivotGridDemoModule x:Class="PivotGridDemo.PivotGrid.CustomerReports"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:sys="clr-namespace:System;assembly=mscorlib"
    xmlns:collections="clr-namespace:System.Collections;assembly=mscorlib"
    xmlns:local="clr-namespace:PivotGridDemo.PivotGrid"
    xmlns:dxpg="http://schemas.devexpress.com/winfx/2008/xaml/pivotgrid"
    xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
    xmlns:dxdb="http://schemas.devexpress.com/winfx/2008/xaml/demobase"
    xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core">

    <dxdb:DemoModuleControl>
        <dxdb:DemoModuleControl.OptionsContent>
            <StackPanel Orientation="Vertical">
                <dx:GroupFrame Header="Customer Reports">
                    <dxe:ListBoxEdit x:Name="reportsList" ShowBorder="False" SelectedIndex="0" Background="{x:Null}" SelectedIndexChanged="ListBoxEdit_SelectionChanged">
                        <dxe:ListBoxEdit.StyleSettings>
                            <dxe:RadioListBoxEditStyleSettings />
                        </dxe:ListBoxEdit.StyleSettings>
                        <dxe:ListBoxEdit.Items>
                            <sys:String>Customers</sys:String>
                            <sys:String>Products (filtering)</sys:String>
                            <sys:String>Top 2 Products</sys:String>
                            <sys:String>Top 10 Customers</sys:String>
                        </dxe:ListBoxEdit.Items>
                    </dxe:ListBoxEdit>
                </dx:GroupFrame>
                <dx:GroupFrame Header="Products Filtering" Name="gbxFiltering" Margin="0,5,0,0">
                    <StackPanel>
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="2*" />
                                <ColumnDefinition Width="2*" />
                            </Grid.ColumnDefinitions>
                            <Grid.RowDefinitions>
                                <RowDefinition />
                                <RowDefinition />
                            </Grid.RowDefinitions>
                            <TextBlock Text="Year:"  VerticalAlignment="Center" Margin="0,0,0,5" />
                            <dxe:ComboBoxEdit Grid.Column="1" Name="cbeYear" Width="80" SelectedIndexChanged="cbeYear_SelectedIndexChanged" IsTextEditable="False"  Margin="0,0,0,5" />
                            <TextBlock Grid.Row="1" Text="Quarter:" Margin="0,5,0,5" HorizontalAlignment="Left" VerticalAlignment="Center" />
                            <dxe:ComboBoxEdit Grid.Row="1" Grid.Column="1" Name="cbeQuarter" Width="80" SelectedIndexChanged="cbeQuarter_SelectedIndexChanged" IsTextEditable="False"  Margin="0,5,0,5" />
                        </Grid>
                    </StackPanel>
                </dx:GroupFrame>
            </StackPanel>
        </dxdb:DemoModuleControl.OptionsContent>

        <dxpg:PivotGridControl local:FieldAreaHelper.FixAreas="True" x:Name="pivotGrid" DataFieldWidth="90"
            RowTreeWidth="225" ShowBorder="False">
            <dxpg:PivotGridControl.Fields>
                <dxpg:PivotGridField x:Name="fieldYear" FieldName="OrderDate" Area="ColumnArea" GroupInterval="DateYear"
                                 Width="80"
                                 Caption="Order Year" />
                <dxpg:PivotGridField x:Name="fieldQuarter" FieldName="OrderDate" Area="ColumnArea" GroupInterval="DateQuarter"
                                 ValueFormat="Qtr {0}" Width="90"
                                 Caption="Order Quarter" />
                <dxpg:PivotGridField x:Name="fieldCompanyName" FieldName="CompanyName" Area="RowArea" Width="150" Caption="Customer" />
                <dxpg:PivotGridField x:Name="fieldProductName" FieldName="ProductName" Area="RowArea" Width="120" Caption="Product" />
                <dxpg:PivotGridField x:Name="fieldProductAmount" FieldName="ProductAmount" Area="DataArea" Width="150"
                                 Caption="Product Amount" CellFormat="c" />
            </dxpg:PivotGridControl.Fields>
        </dxpg:PivotGridControl>
    </dxdb:DemoModuleControl>
</local:PivotGridDemoModule>!Ousing System.Windows;
using DevExpress.Xpf.DemoBase;
using DevExpress.Xpf.PivotGrid;
using DevExpress.Xpf.Core;

namespace PivotGridDemo.PivotGrid {
    public partial class CustomerReports : PivotGridDemoModule {
        const string allString = "(All)";

        public CustomerReports() {
            InitializeComponent();
            pivotGrid.DataSource = NWindData.CustomerReports;
            ResetValues();
        }
        private void ListBoxEdit_SelectionChanged(object sender, RoutedEventArgs e) {
            pivotGrid.BeginUpdate();
            switch(reportsList.SelectedIndex) {
                case 0:
                    ResetValues();
                    break;
                case 1:
                    SetYearFilter();
                    break;
                case 2:
                    SetTopProducts();
                    break;
                case 3:
                    SetTopCustomers();
                    break;
            }
            pivotGrid.EndUpdateAsync();
        }
        private void cbeYear_SelectedIndexChanged(object sender, RoutedEventArgs e) {
            UpdateYearFilter();
        }
        private void cbeQuarter_SelectedIndexChanged(object sender, RoutedEventArgs e) {
            UpdateQuarterFilter();
        }

        void SetTopCustomers() {
            ResetValues();
            fieldProductName.Area = FieldArea.FilterArea;
            fieldYear.Area = fieldQuarter.Area = FieldArea.FilterArea;
            fieldCompanyName.SortByField = fieldProductAmount;
            fieldCompanyName.SortOrder = FieldSortOrder.Descending;
            fieldCompanyName.TopValueCount = 10;
        }
        void SetTopProducts() {
            ResetValues();
            fieldYear.Area = fieldQuarter.Area = FieldArea.FilterArea;
            fieldProductName.SortByField = fieldProductAmount;
            fieldProductName.SortOrder = FieldSortOrder.Descending;
            fieldProductName.TopValueCount = 2;
        }
        void SetYearFilter() {
            ResetValues();
            if(cbeYear.Items.Count == 0) {
                cbeQuarter.Items.Add(allString);
                foreach(object obj in fieldYear.GetUniqueValues()) {
                    cbeYear.Items.Add(obj);
                }
                cbeYear.SelectedItem = cbeYear.Items[0];
                foreach(object obj in fieldQuarter.GetUniqueValues()) {
                    cbeQuarter.Items.Add(obj);
                }
                cbeQuarter.SelectedItem = cbeQuarter.Items[0];
                cbeYear.SelectedItem = cbeYear.Items[0];
            }
            gbxFiltering.Visibility = System.Windows.Visibility.Visible;
            UpdateYearFilter();
            UpdateQuarterFilter();
        }
        void ResetValues() {
            if (gbxFiltering != null)
            gbxFiltering.Visibility = System.Windows.Visibility.Collapsed;
            if(fieldQuarter != null) {
                fieldQuarter.FilterValues.Clear();
                fieldQuarter.FilterValues.FilterType = FieldFilterType.Excluded;
                fieldQuarter.Area = FieldArea.ColumnArea;
            }
            if(fieldYear != null) {
                fieldYear.FilterValues.Clear();
                fieldYear.FilterValues.FilterType = FieldFilterType.Excluded;
                fieldYear.Area = FieldArea.ColumnArea;
                fieldYear.AreaIndex = 0;
            }
            if(fieldProductName != null) {
                fieldProductName.SortOrder = FieldSortOrder.Ascending;
                fieldProductName.SortByField = null;
                fieldProductName.TopValueCount = 0;
                fieldProductName.Area = FieldArea.RowArea;
                fieldProductName.AreaIndex = 1;
            }
            if(fieldCompanyName != null) {
                fieldCompanyName.SortByField = null;
                fieldCompanyName.TopValueCount = 0;
                fieldCompanyName.SortOrder = FieldSortOrder.Ascending;
            }
        }
        void UpdateYearFilter() {
            fieldYear.FilterValues.FilterType = FieldFilterType.Included;
            fieldYear.FilterValues.Clear();
            fieldYear.FilterValues.Add(cbeYear.SelectedItem);
        }
        void UpdateQuarterFilter() {
            fieldQuarter.FilterValues.Clear();
            fieldQuarter.FilterValues.FilterType = FieldFilterType.Excluded;
            if(cbeQuarter.SelectedIndex == 0) return;
            fieldQuarter.FilterValues.FilterType = FieldFilterType.Included;
            fieldQuarter.FilterValues.Add(cbeQuarter.SelectedItem);
        }
    }
}!�MSBAML```����OKmscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0891&clr-namespace:System;assembly=mscorlibSystemI2clr-namespace:System.Collections;assembly=mscorlibSystem.CollectionsIEPivotGridDemo, Version=13.1.4.0, Culture=neutral, PublicKeyToken=nullA%clr-namespace:PivotGridDemo.PivotGridPivotGridDemo.PivotGrid1+PivotGridDemo.PivotGrid.CustomGroupInterval\XPresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNWindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35WSPresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35D9http://schemas.microsoft.com/winfx/2006/xaml/presentationRNSystem.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:x,http://schemas.microsoft.com/winfx/2006/xaml6sys&clr-namespace:System;assembly=mscorlibJcollections2clr-namespace:System.Collections;assembly=mscorlib7local%clr-namespace:PivotGridDemo.PivotGridfbDevExpress.Xpf.PivotGrid.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aBdxpg7http://schemas.devexpress.com/winfx/2008/xaml/pivotgrida]DevExpress.Xpf.Core.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a?dxe5http://schemas.devexpress.com/winfx/2008/xaml/editorseaDevExpress.Xpf.DemoBase.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aAdxdb6http://schemas.devexpress.com/winfx/2008/xaml/demobase;dx2http://schemas.devexpress.com/winfx/2008/xaml/core.�/)DevExpress.Xpf.DemoBase.DemoModuleControlOptionsContent����Orientation$Vertical=�$	�260��.+�$DevExpress.Xpf.Core.GroupFrame$��Custom Group Settings��$
�0,0,0,4q�.���.+���$�Center=�$
�0,4,0,4q�Select Group Interval:)#DevExpress.Xpf.Editors.ComboBoxEdit-$
�cbGroup��$�Center=�$
�Stretch=�'!DevExpress.Xpf.Editors.ButtonEditIsTextEditable.$
�0,4,0,4q�Content./)DevExpress.Xpf.PivotGrid.PivotGridControl-Name$	pivotGrid��-'PivotGridDemo.PivotGrid.FieldAreaHelperFixAreas.RowTreeWidth$	215�
ShowBorder.
Fields-'DevExpress.Xpf.PivotGrid.PivotGridField-	Name$	pivotGridField1��
	FieldName$
ProductName��UnboundFieldName$pivotGridField1��Area$
RowArea=�
	AreaIndex$
0�Caption$
Product Group��-$	pivotGridField2��$
ProductName��$
RowArea=�$
1�$
Product��-$	pivotGridField3��$
ProductSales��$DataArea=�$
0�$Sales��-$	pivotGridField4��$
ShippedDate��$
ColumnArea=�$
0�$Year - Quarter��Visible.-$	pivotGridField5��$
ShippedDate��$
ColumnArea=�$
0�$Shipped Date��!s
<local:PivotGridDemoModule x:Class="PivotGridDemo.PivotGrid.CustomGroupInterval"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:sys="clr-namespace:System;assembly=mscorlib"
    xmlns:collections="clr-namespace:System.Collections;assembly=mscorlib"
    xmlns:local="clr-namespace:PivotGridDemo.PivotGrid"
    xmlns:dxpg="http://schemas.devexpress.com/winfx/2008/xaml/pivotgrid"
    xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
    xmlns:dxdb="http://schemas.devexpress.com/winfx/2008/xaml/demobase"
    xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core">
    <dxdb:DemoModuleControl>
        <dxdb:DemoModuleControl.OptionsContent>
            <StackPanel Orientation="Vertical" Width="260">
                <dx:GroupFrame Header="Custom Group Settings" Margin="0,0,0,4">
                    <StackPanel>
                        <TextBlock VerticalAlignment="Center" Margin="0,4,0,4">Select Group Interval:</TextBlock>
                        <dxe:ComboBoxEdit Name="cbGroup" VerticalAlignment="Center" HorizontalAlignment="Stretch"
                                      IsTextEditable="False" Margin="0,4,0,4" SelectedIndexChanged="cbGroup_SelectedIndexChanged" />
                    </StackPanel>
                </dx:GroupFrame>
            </StackPanel>
        </dxdb:DemoModuleControl.OptionsContent>
        <dxpg:PivotGridControl local:FieldAreaHelper.FixAreas="True" x:Name="pivotGrid"
                               RowTreeWidth="215" CustomGroupInterval="pivotGrid_CustomGroupInterval" ShowBorder="False">
            <dxpg:PivotGridControl.Fields>
                <dxpg:PivotGridField x:Name="pivotGridField1" FieldName="ProductName" UnboundFieldName="pivotGridField1"
                                 Area="RowArea" AreaIndex="0" Caption="Product Group" />
                <dxpg:PivotGridField x:Name="pivotGridField2" FieldName="ProductName" Area="RowArea" AreaIndex="1" Caption="Product" />
                <dxpg:PivotGridField x:Name="pivotGridField3" FieldName="ProductSales" Area="DataArea" AreaIndex="0" Caption="Sales" />
                <dxpg:PivotGridField x:Name="pivotGridField4" FieldName="ShippedDate" Area="ColumnArea" AreaIndex="0" Caption="Year - Quarter"
                                 Visible="False" />
                <dxpg:PivotGridField x:Name="pivotGridField5" FieldName="ShippedDate" Area="ColumnArea" AreaIndex="0" Caption="Shipped Date" />
            </dxpg:PivotGridControl.Fields>
        </dxpg:PivotGridControl>
    </dxdb:DemoModuleControl>
</local:PivotGridDemoModule>!}
using System;
using System.Windows;
using DevExpress.Xpf.DemoBase;
using DevExpress.Xpf.PivotGrid;
using DevExpress.Xpf.Editors;
using DevExpress.Xpf.Core;

namespace PivotGridDemo.PivotGrid {
    public partial class CustomGroupInterval : PivotGridDemoModule {
        int selectedDemo;

        public CustomGroupInterval() {
            selectedDemo = 0;
            InitializeComponent();
            pivotGrid.DataSource = NWindData.ProductReports;
            cbGroup.Items.Add(new ComboBoxEditItem() { Content = "Group Products by First Characters", Tag = 0 });
            cbGroup.Items.Add(new ComboBoxEditItem() { Content = "Group Sales by Year and Quarter", Tag = 1 });
            cbGroup.SelectedIndex = 0;
        }

        int SelectedDemo { get { return selectedDemo; } }

        void cbGroup_SelectedIndexChanged(object sender, RoutedEventArgs e) {
            selectedDemo = (int)((ComboBoxEditItem)cbGroup.SelectedItem).Tag;
            pivotGrid.BeginUpdate();
            switch(SelectedDemo) {
                case 0:
                    pivotGrid.Fields[0].Visible = true;
                    pivotGrid.Fields[0].Caption = "Product Group";
                    pivotGrid.Fields[0].GroupInterval = FieldGroupInterval.Custom;

                    pivotGrid.Fields[4].Caption = "Year";
                    pivotGrid.Fields[4].GroupInterval = FieldGroupInterval.DateYear;

                    pivotGrid.Fields[3].Visible = false;
                    pivotGrid.Fields[3].GroupInterval = FieldGroupInterval.Default;
                    break;
                case 1:
                    pivotGrid.Fields[3].Visible = true;
                    pivotGrid.Fields[3].Caption = "Year - Quarter";
                    pivotGrid.Fields[3].GroupInterval = FieldGroupInterval.Custom;
                    pivotGrid.Fields[3].AreaIndex = 0;

                    pivotGrid.Fields[4].Caption = "Shipped Date";
                    pivotGrid.Fields[4].GroupInterval = FieldGroupInterval.Date;
                    pivotGrid.Fields[4].AreaIndex = 1;

                    pivotGrid.Fields[0].Visible = false;
                    pivotGrid.Fields[0].GroupInterval = FieldGroupInterval.Default;
                    break;
            }
            pivotGrid.EndUpdate();
            pivotGrid.CollapseAll();
        }
        void pivotGrid_CustomGroupInterval(object sender, PivotCustomGroupIntervalEventArgs e) {
            switch(SelectedDemo) {
                case 0:
                    if(!object.ReferenceEquals(e.Field, pivotGrid.Fields[0])) return;
                    if(Convert.ToChar(e.Value.ToString()[0]) < 'F') {
                        e.GroupValue = "A-E";
                        return;
                    }
                    if(Convert.ToChar(e.Value.ToString()[0]) > 'E' && Convert.ToChar(e.Value.ToString()[0]) < 'T') {
                        e.GroupValue = "F-S";
                        return;
                    }
                    if(Convert.ToChar(e.Value.ToString()[0]) > 'S')
                        e.GroupValue = "T-Z";
                    break;
                case 1:
                    if(!object.ReferenceEquals(e.Field, pivotGrid.Fields[3])) return;
                    e.GroupValue = ((DateTime)e.Value).Year + " - " + ((((DateTime)e.Value).Month - 1) / 3 + 1).ToString();
                    break;
            }
        }
    }
}!MSBAML```����OKmscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0891&clr-namespace:System;assembly=mscorlibSystemI2clr-namespace:System.Collections;assembly=mscorlibSystem.CollectionsIEPivotGridDemo, Version=13.1.4.0, Culture=neutral, PublicKeyToken=nullA%clr-namespace:PivotGridDemo.PivotGridPivotGridDemo.PivotGrid*$PivotGridDemo.PivotGrid.CustomLayout\XPresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNWindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35WSPresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35D9http://schemas.microsoft.com/winfx/2006/xaml/presentationRNSystem.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:x,http://schemas.microsoft.com/winfx/2006/xaml6sys&clr-namespace:System;assembly=mscorlibJcollections2clr-namespace:System.Collections;assembly=mscorlib7local%clr-namespace:PivotGridDemo.PivotGridfbDevExpress.Xpf.PivotGrid.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aBdxpg7http://schemas.devexpress.com/winfx/2008/xaml/pivotgrida]DevExpress.Xpf.Core.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a?dxe5http://schemas.devexpress.com/winfx/2008/xaml/editorsd`DevExpress.Xpf.Docking.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a@dxdo5http://schemas.devexpress.com/winfx/2008/xaml/dockingj	fDevExpress.Xpf.LayoutControl.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aFdxlc;http://schemas.devexpress.com/winfx/2008/xaml/layoutcontrol	;dx2http://schemas.devexpress.com/winfx/2008/xaml/coree
aDevExpress.Xpf.DemoBase.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aAdxdb6http://schemas.devexpress.com/winfx/2008/xaml/demobase
1+PivotGridDemo.PivotGrid.PivotGridDemoModule
Loaded$ PivotGridDemoModule_Loaded��.�/
)DevExpress.Xpf.DemoBase.DemoModuleControlContent.0	*DevExpress.Xpf.LayoutControl.LayoutControl-Name$layoutItems��$
�Stretch=�.	(DevExpress.Xpf.LayoutControl.LayoutGroupOrientation$Vertical=�.+�.+�$Vertical=�$
�Stretch=�$	�180��.+�View$GroupBox=�
Header$
Hidden Fields��
IsCollapsible.4	.DevExpress.Xpf.LayoutControl.LayoutControlBasePadding$0q�	ItemSpace$0Q�	HeaderTemplate	��.R��
J�SnapsToDevicePixels
.$�16��$�-6,0,0,0q��ColumnDefinitions��$
�Auto���$�*�.+��$�Center=�$�16��$�16����1+PivotGridDemo.PivotGrid.PivotImageExtension	ImageName$#Customization2007HiddenFields��
��BitmapScalingMode$
NearestNeighbor=�%DevExpress.Xpf.Editors.TextEdit$�1�%DevExpress.Xpf.Editors.BaseEditEditMode$InplaceInactive=�$�Center=�$
�Left=�	EditValue)	#DevExpress.Xpf.Core.ObjectConverter$
Hidden Fields	
GroupBoxStyle����
TargetType+
	%DevExpress.Xpf.LayoutControl.GroupBox"
.���Property���Value$0q�.+�4.DevExpress.Xpf.PivotGrid.PivotFieldListControlArea$	All=�Orientation$
Auto=�
ShowBorder.��#0fffEmptyTextVisibility$	Collapsed=�2,DevExpress.Xpf.Core.ColumnChooserControlBaseOwner��ElementName$	pivotGrid��$GroupBox=�$
Filter Fields��.IsCollapsed.	��.R��
.$�16��$�-6,0,0,0q���$
�Auto���$�*�.+��$�Center=�$�16��$�16����$Customization2007Filter��$
NearestNeighbor=�$�1�$InplaceInactive=�$�Center=�$
�Left=�$Filter Area	��"
.����$0q�.+�$
FilterArea=�$
Auto=�.��#0fff$	Collapsed=��$	pivotGrid��$Vertical=�$
�Stretch=�.+�-
	'DevExpress.Xpf.LayoutControl.LayoutItem

Content.$Vertical=�.+�

TitleVisibility$	Collapsed=�$
�5,0,5,0q�,&DevExpress.Xpf.Core.ContentControlBaseContent.$
ColumnArea=�$
Auto=�.LabelVisibility$
Visible=���#0fff�$	pivotGrid��
$	Collapsed=�$
�5,0,5,0q�.$
RowArea=�$
Auto=�.$
Visible=���#0fff�$	pivotGrid��
$	Collapsed=�$
�5,0,5,0q�.$DataArea=�$
Auto=�.$
Visible=���#0fff�$	pivotGrid��
$
�Stretch=�.
$	Collapsed=�$�0q�./)DevExpress.Xpf.PivotGrid.PivotGridControl-Name$	pivotGrid��-'PivotGridDemo.PivotGrid.FieldAreaHelper FixAreas .!RowTreeWidth$	!200�"
ShowBorder".#ShowFilterHeaders#.$ShowDataHeaders$.%ShowColumnHeaders%.&ShowRowHeaders&.
'Fields'-'DevExpress.Xpf.PivotGrid.PivotGridField-(Name$(
fieldCategory��)	FieldName$)CategoryName��*Area$
*RowArea=�+Width$	+100Q�,Caption$,Category��-$(fieldProduct��$)ProductName��$
*RowArea=�$	+200Q�$
,Product��-Visible-.-$(	fieldYear��$)	OrderDate��$*
ColumnArea=�.
GroupInterval$.DateYear=�$
,Year��$+80Q�-$(fieldQuarter��$)	OrderDate��$*
ColumnArea=�$.DateQuarter=�$
,Quarter��$+80Q�/ValueFormat$/Quarter {0}��-.-$(
fieldQuantity��$)Quantity��$*DataArea=�$	+100Q�$,Quantity��0
CellFormat$0f2��-$(fieldExtendedPrice��$)Extended Price��$*DataArea=�$	+100Q�$,Extended Price��!7 <local:PivotGridDemoModule x:Class="PivotGridDemo.PivotGrid.CustomLayout"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:sys="clr-namespace:System;assembly=mscorlib"
    xmlns:collections="clr-namespace:System.Collections;assembly=mscorlib"
    xmlns:local="clr-namespace:PivotGridDemo.PivotGrid"
    xmlns:dxpg="http://schemas.devexpress.com/winfx/2008/xaml/pivotgrid"
    xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
    xmlns:dxdo="http://schemas.devexpress.com/winfx/2008/xaml/docking"
    xmlns:dxlc="http://schemas.devexpress.com/winfx/2008/xaml/layoutcontrol"
    xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core" Loaded="PivotGridDemoModule_Loaded"
    xmlns:dxdb="http://schemas.devexpress.com/winfx/2008/xaml/demobase" >

    <dxdb:DemoModuleControl>
        <dxlc:LayoutControl  x:Name="layoutItems" VerticalAlignment="Stretch" Orientation="Vertical">
            <dxlc:LayoutGroup>
                <dxlc:LayoutGroup Orientation="Vertical" VerticalAlignment="Stretch" Width="180">
                    <dxlc:LayoutGroup View="GroupBox" Header="Hidden Fields" IsCollapsible="True" Padding="0" ItemSpace="0">
                        <dxlc:LayoutGroup.HeaderTemplate>
                            <DataTemplate>
                                <Grid SnapsToDevicePixels="True" Height="16" Margin="-6,0,0,0">
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="Auto" />
                                        <ColumnDefinition Width="*" />
                                    </Grid.ColumnDefinitions>
                                    <Image VerticalAlignment="Center"
                                               Source="{local:PivotImage ImageName=Customization2007HiddenFields}" Width="16" Height="16" >
                                        <RenderOptions.BitmapScalingMode>NearestNeighbor</RenderOptions.BitmapScalingMode>
                                    </Image>
                                    <dxe:TextEdit Grid.Column="1" EditMode="InplaceInactive" VerticalAlignment="Center"
                                                      HorizontalAlignment="Left" EditValue="Hidden Fields"  />
                                </Grid>
                            </DataTemplate>
                        </dxlc:LayoutGroup.HeaderTemplate>
                        <dxlc:LayoutGroup.GroupBoxStyle>
                            <Style TargetType="{x:Type dxlc:GroupBox}">
                                <Setter Property="Padding" Value="0" />
                            </Style>
                        </dxlc:LayoutGroup.GroupBoxStyle>

                        <dxpg:PivotFieldListControl Area="All" Owner="{Binding ElementName=pivotGrid}" Orientation="Auto" ShowBorder="False" Background="#0fff" EmptyTextVisibility="Collapsed" />
                    </dxlc:LayoutGroup>
                    <dxlc:LayoutGroup View="GroupBox" Header="Filter Fields"  IsCollapsible="True" IsCollapsed="True">
                        <dxlc:LayoutGroup.HeaderTemplate>
                            <DataTemplate>
                                <Grid SnapsToDevicePixels="True" Height="16" Margin="-6,0,0,0">
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="Auto" />
                                        <ColumnDefinition Width="*" />
                                    </Grid.ColumnDefinitions>
                                    <Image VerticalAlignment="Center"
                                               Source="{local:PivotImage ImageName=Customization2007Filter}" Width="16" Height="16" >
                                        <RenderOptions.BitmapScalingMode>NearestNeighbor</RenderOptions.BitmapScalingMode>
                                    </Image>
                                    <dxe:TextEdit Grid.Column="1" EditMode="InplaceInactive" VerticalAlignment="Center"
                                                      HorizontalAlignment="Left" EditValue="Filter Area"  />
                                </Grid>
                            </DataTemplate>
                        </dxlc:LayoutGroup.HeaderTemplate>
                        <dxlc:LayoutGroup.GroupBoxStyle>
                            <Style TargetType="{x:Type dxlc:GroupBox}">
                                <Setter Property="Padding" Value="0" />
                            </Style>
                        </dxlc:LayoutGroup.GroupBoxStyle>
                        <dxpg:PivotFieldListControl Area="FilterArea" Owner="{Binding ElementName=pivotGrid}" Orientation="Auto" ShowBorder="False" Background="#0fff" EmptyTextVisibility="Collapsed"/>
                    </dxlc:LayoutGroup>
                </dxlc:LayoutGroup>
                <dxlc:LayoutGroup Orientation="Vertical" VerticalAlignment="Stretch">
                    <dxlc:LayoutItem>
                        <dxlc:LayoutGroup Orientation="Vertical">
                            <dxlc:GroupBox TitleVisibility="Collapsed" Padding="5,0,5,0">
                                <dxpg:PivotFieldListControl Area="ColumnArea" Owner="{Binding ElementName=pivotGrid}" Orientation="Auto" ShowBorder="False" LabelVisibility="Visible" Background="#0fff" >
                                </dxpg:PivotFieldListControl>
                            </dxlc:GroupBox>
                            <dxlc:GroupBox TitleVisibility="Collapsed" Padding="5,0,5,0">
                                <dxpg:PivotFieldListControl Area="RowArea" Owner="{Binding ElementName=pivotGrid}" Orientation="Auto"  ShowBorder="False" LabelVisibility="Visible" Background="#0fff" />
                            </dxlc:GroupBox>
                            <dxlc:GroupBox TitleVisibility="Collapsed" Padding="5,0,5,0">
                                <dxpg:PivotFieldListControl Area="DataArea" Owner="{Binding ElementName=pivotGrid}" Orientation="Auto"  ShowBorder="False" LabelVisibility="Visible" Background="#0fff" />
                            </dxlc:GroupBox>
                        </dxlc:LayoutGroup>
                    </dxlc:LayoutItem>
                    <dxlc:LayoutItem VerticalAlignment="Stretch">
                        <dxlc:GroupBox TitleVisibility="Collapsed" Padding="0">
                            <dxpg:PivotGridControl local:FieldAreaHelper.FixAreas="True" x:Name="pivotGrid" RowTreeWidth="200" ShowBorder="False"
                                           ShowFilterHeaders="False" ShowDataHeaders="False" ShowColumnHeaders="False" ShowRowHeaders="False"  >
                                <dxpg:PivotGridControl.Fields>
                                    <dxpg:PivotGridField x:Name="fieldCategory" FieldName="CategoryName" Area="RowArea" Width="100" Caption="Category" />
                                    <dxpg:PivotGridField x:Name="fieldProduct" FieldName="ProductName" Area="RowArea" Width="200" Caption="Product" Visible="False" />
                                    <dxpg:PivotGridField x:Name="fieldYear" FieldName="OrderDate" Area="ColumnArea" GroupInterval="DateYear" Caption="Year" Width="80" />
                                    <dxpg:PivotGridField x:Name="fieldQuarter" FieldName="OrderDate" Area="ColumnArea" GroupInterval="DateQuarter" Caption="Quarter" Width="80" ValueFormat="Quarter {0}" Visible="False" />
                                    <dxpg:PivotGridField x:Name="fieldQuantity" FieldName="Quantity" Area="DataArea" Width="100" Caption="Quantity" CellFormat="f2" />
                                    <dxpg:PivotGridField x:Name="fieldExtendedPrice" FieldName="Extended Price" Area="DataArea" Width="100" Caption="Extended Price"  />
                                </dxpg:PivotGridControl.Fields>
                            </dxpg:PivotGridControl>
                        </dxlc:GroupBox>
                    </dxlc:LayoutItem>

                </dxlc:LayoutGroup>
            </dxlc:LayoutGroup>
        </dxlc:LayoutControl >

    </dxdb:DemoModuleControl>
</local:PivotGridDemoModule>!�using System;
using System.Windows.Data;
using System.Windows.Markup;
using DevExpress.Xpf.DemoBase;
using System.Windows;
using DevExpress.Xpf.Core;
using DevExpress.Xpf.PivotGrid;
using System.Collections.Generic;
using System.Windows.Media.Imaging;
using System.Reflection;

namespace PivotGridDemo.PivotGrid {
    public partial class CustomLayout : PivotGridDemoModule {

        public CustomLayout() {
            InitializeComponent();
        }

        private void PivotGridDemoModule_Loaded(object sender, RoutedEventArgs e) {
            pivotGrid.DataSource = NWindData.SalesPerson;
        }
    }

    public class PivotImageExtension : MarkupExtension {
        static Dictionary<string, BitmapImage> images = new Dictionary<string, BitmapImage>();
        static BitmapImage LoadImage(string imageName) {
            string resourcePath = string.Format("DevExpress.Xpf.PivotGrid.Images.{0}.png", imageName);
            Assembly asm = typeof(PivotGridControl).Assembly;
            return DevExpress.Xpf.Core.Native.ImageHelper.CreateImageFromEmbeddedResource(asm, resourcePath);
        }
        public static BitmapImage GetImage(string imageName) {
            BitmapImage image = null;
            if(!images.TryGetValue(imageName, out image)) {
                image = LoadImage(imageName);
                images.Add(imageName, image);
            }
            return image;
        }
        public string ImageName { get; set; }

        public PivotImageExtension() { }

        public PivotImageExtension(string imageName) {
            ImageName = imageName;
        }

        public override object ProvideValue(IServiceProvider serviceProvider) {
            return GetImage(ImageName);
        }
    }
}!�MSBAML```����OKmscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0891&clr-namespace:System;assembly=mscorlibSystemI2clr-namespace:System.Collections;assembly=mscorlibSystem.CollectionsIEPivotGridDemo, Version=13.1.4.0, Culture=neutral, PublicKeyToken=nullA%clr-namespace:PivotGridDemo.PivotGridPivotGridDemo.PivotGrid'!PivotGridDemo.PivotGrid.Dashboard\XPresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNWindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35WSPresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35D9http://schemas.microsoft.com/winfx/2006/xaml/presentationRNSystem.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:x,http://schemas.microsoft.com/winfx/2006/xaml6sys&clr-namespace:System;assembly=mscorlibJcollections2clr-namespace:System.Collections;assembly=mscorlib7local%clr-namespace:PivotGridDemo.PivotGridfbDevExpress.Xpf.PivotGrid.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aBdxpg7http://schemas.devexpress.com/winfx/2008/xaml/pivotgrida]DevExpress.Xpf.Core.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a;dx2http://schemas.devexpress.com/winfx/2008/xaml/core?dxe5http://schemas.devexpress.com/winfx/2008/xaml/editorseaDevExpress.Xpf.DemoBase.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aAdxdb6http://schemas.devexpress.com/winfx/2008/xaml/demobasec	_DevExpress.Xpf.Gauges.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a?dxga4http://schemas.devexpress.com/winfx/2008/xaml/gauges	$	�300��$	�300���	Resources
0*PivotGridDemo.PivotGrid.SimpleGaugeControl��
TargetType�Property�Value��
TargetType�RowDefinitions0	*DevExpress.Xpf.Gauges.CircularGaugeControlModel0	*DevExpress.Xpf.Gauges.CircularClassicModel
Scales$	DevExpress.Xpf.Gauges.ArcScale
Min!	DevExpress.Xpf.Gauges.Scale	
StartValue

MaxEndValueMajorIntervalCount
ShowMinorTickmarks]
YDevExpress.Data.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a5
/DevExpress.Utils.Design.DefaultBooleanConverter
StartAngleEndAngleLabelOptions0	*DevExpress.Xpf.Gauges.ArcScaleLabelOptions-	'DevExpress.Xpf.Gauges.ScaleLabelOptionsFormatStringOrientationNeedles*		$DevExpress.Xpf.Gauges.ArcScaleNeedle.
	(DevExpress.Xpf.Gauges.ValueIndicatorBase
Value�RelativeSource
Layers)	#DevExpress.Xpf.Gauges.ArcScaleLayer�%y'��".������".R���$
��Auto��$��*�.+�$�Center=�$	�216��$	�155��#	z#z
$2�$

true$
-200Q�$20Q�$	{0}��$LeftToRight=�	�*Value+��*TemplatedParent+(�$��1�$�80��$�15��.����$�	PART_Text��$�	UltraBold"�.�/)DevExpress.Xpf.DemoBase.DemoModuleControlOptionsContent����Orientation$Vertical=�.+�$
DevExpress.Xpf.Core.GroupFrame
$��Report��.�("DevExpress.Xpf.Editors.ListBoxEdit-Name$
dashboardList��%DevExpress.Xpf.Editors.BaseEdit
ShowBorder.
SelectedIndex$0��Z�
StyleSettings:4DevExpress.Xpf.Editors.RadioListBoxEditStyleSettingsItems��Complete Report����Year-by-Year Comparison����Groups Comparison��Content.�$�12q��$��*��$
��Auto��ColumnDefinitions��$�*���$�*���$�*�.+�/)DevExpress.Xpf.PivotGrid.PivotGridControl- Name$ 	pivotGrid��-'PivotGridDemo.PivotGrid.FieldAreaHelper!FixAreas!.$��0�$�3�"ShowColumnHeaders".#ShowDataHeaders#.$ShowFilterHeaders$.%ShowRowHeaders%.&RowTreeWidth$	&202�
'Fields'-'DevExpress.Xpf.PivotGrid.PivotGridField-(Name$(
fieldCategory��)	FieldName$)CategoryName��*Area$
*RowArea=�+Width$	+100Q�,Caption$,Category��-$(fieldProduct��$)ProductName��$
*RowArea=�$	+200Q�$
,Product��-$(
fieldSales��$)ProductSales��$*DataArea=�$,Sales��-AllowedAreas$-DataArea=�-$(	fieldYear��$)ShippedDate��$*
ColumnArea=�.
GroupInterval$.DateYear=�$
,Year��-$(fieldQuarter��$)ShippedDate��$*
ColumnArea=�$.DateQuarter=�$
,Quarter����$Vertical=�$�0�$��1�$�15,7,0,5q�$�Center=�.+���$
��Wrap=�$�49��$
�0,0,0,4q�$��18(�/��
TextAlignment$/Center=�$��DemiBold"�$�Center=�	Average��Transaction Value-0Name$0
avgTransGauge��1ValueStringFormat$1c��$�Center=���$Vertical=�$�1�$��1�$
�0,7,0,5q�$�Center=�.+���$
��Wrap=�$�49��$
�0,0,0,4q�$/Center=�$��18(�$��DemiBold"�$�Center=�Sales Compared��to Last Year%DevExpress.Xpf.Core.SimplePanel.+�-	$0salesToLastYearGauge��$1f2��$�Center=���-
2��Name$2salesToLastYearNA��$�0,45,0,0q�$/Center=�$�Center=�$�Center=�Not available.��$Vertical=�$�2�$��1�$�0,7,15,5q�$�Center=�.+���$��18(�$
��Wrap=�$�49��$
�0,0,0,4q�$/Center=�$��DemiBold"�$�Center=�Sales��	to Target-$0salesToTargetGauge��$1f2��$�Center=�!N<local:PivotGridDemoModule x:Class="PivotGridDemo.PivotGrid.Dashboard"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:sys="clr-namespace:System;assembly=mscorlib"
    xmlns:collections="clr-namespace:System.Collections;assembly=mscorlib"
    xmlns:local="clr-namespace:PivotGridDemo.PivotGrid"
    xmlns:dxpg="http://schemas.devexpress.com/winfx/2008/xaml/pivotgrid"
    xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
    xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
    xmlns:dxdb="http://schemas.devexpress.com/winfx/2008/xaml/demobase"
    xmlns:dxga="http://schemas.devexpress.com/winfx/2008/xaml/gauges"
    Height="300" Width="300">
    <local:PivotGridDemoModule.Resources>
        <Style TargetType="{x:Type local:SimpleGaugeControl}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type local:SimpleGaugeControl}">
                        <Grid>
                            <Grid.RowDefinitions>
                                <RowDefinition Height="Auto"/>
                                <RowDefinition Height="*"/>
                            </Grid.RowDefinitions>
                            <dxga:CircularGaugeControl HorizontalAlignment="Center" Width="216" Height="155" >
                                <dxga:CircularGaugeControl.Model>
                                    <dxga:CircularClassicModel/>
                                </dxga:CircularGaugeControl.Model>
                                <dxga:CircularGaugeControl.Scales>
                                    <dxga:ArcScale StartValue="{TemplateBinding Min}" EndValue="{TemplateBinding Max}" MajorIntervalCount="2" ShowMinorTickmarks="true" StartAngle="-200" EndAngle="20">
                                        <dxga:ArcScale.LabelOptions>
                                            <dxga:ArcScaleLabelOptions FormatString="{}{0}" Orientation="LeftToRight" />
                                        </dxga:ArcScale.LabelOptions>
                                        <dxga:ArcScale.Needles>
                                            <dxga:ArcScaleNeedle Value="{Binding Value, RelativeSource={RelativeSource TemplatedParent}}"/>
                                        </dxga:ArcScale.Needles>
                                        <dxga:ArcScale.Layers>
                                            <dxga:ArcScaleLayer/>
                                        </dxga:ArcScale.Layers>
                                    </dxga:ArcScale>
                                </dxga:CircularGaugeControl.Scales>
                            </dxga:CircularGaugeControl>
                            <Viewbox Grid.Row="1" Width="80" Height="15">
                                <ContentControl FontWeight="UltraBold" Name="PART_Text"/>
                            </Viewbox>
                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </local:PivotGridDemoModule.Resources>
    <dxdb:DemoModuleControl>
        <dxdb:DemoModuleControl.OptionsContent>
            <StackPanel Orientation="Vertical">
                <dx:GroupFrame Header="Report">
                    <dxe:ListBoxEdit x:Name="dashboardList" ShowBorder="False" SelectedIndex="0" Background="{x:Null}" SelectedIndexChanged="ListBoxEdit_SelectionChanged">
                        <dxe:ListBoxEdit.StyleSettings>
                            <dxe:RadioListBoxEditStyleSettings />
                        </dxe:ListBoxEdit.StyleSettings>
                        <dxe:ListBoxEdit.Items>
                            <sys:String>Complete Report</sys:String>
                            <sys:String>Year-by-Year Comparison</sys:String>
                            <sys:String>Groups Comparison</sys:String>
                        </dxe:ListBoxEdit.Items>
                    </dxe:ListBoxEdit>
                </dx:GroupFrame>
            </StackPanel>
        </dxdb:DemoModuleControl.OptionsContent>

        <Grid Margin="12">
            <Grid.RowDefinitions>
                <RowDefinition Height="*" />
                <RowDefinition Height="Auto" />
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="*" />
            </Grid.ColumnDefinitions>
            <dxpg:PivotGridControl local:FieldAreaHelper.FixAreas="True" x:Name="pivotGrid" Grid.Row="0" Grid.ColumnSpan="3" GridLayout="pivotGrid_GridLayout"
                                   ShowColumnHeaders="False" ShowDataHeaders="False" ShowFilterHeaders="False" ShowRowHeaders="False" RowTreeWidth="202">
                <dxpg:PivotGridControl.Fields>
                    <dxpg:PivotGridField x:Name="fieldCategory" FieldName="CategoryName" Area="RowArea" Width="100" Caption="Category" />
                    <dxpg:PivotGridField x:Name="fieldProduct" FieldName="ProductName" Area="RowArea" Width="200" Caption="Product" />
                    <dxpg:PivotGridField x:Name="fieldSales" FieldName="ProductSales" Area="DataArea" Caption="Sales" AllowedAreas="DataArea" />
                    <dxpg:PivotGridField x:Name="fieldYear" FieldName="ShippedDate" Area="ColumnArea" GroupInterval="DateYear" Caption="Year" />
                    <dxpg:PivotGridField x:Name="fieldQuarter" FieldName="ShippedDate" Area="ColumnArea" GroupInterval="DateQuarter" Caption="Quarter" />
                </dxpg:PivotGridControl.Fields>
            </dxpg:PivotGridControl>
            <StackPanel Orientation="Vertical" Grid.Column="0" Grid.Row="1" Margin="15,7,0,5" HorizontalAlignment="Center">
                <TextBlock TextWrapping="Wrap" Height="49" Margin="0,0,0,4" FontSize="18" TextAlignment="Center"
                           FontWeight="DemiBold"
                           HorizontalAlignment="Center">Average<LineBreak />Transaction Value</TextBlock>
                <local:SimpleGaugeControl x:Name="avgTransGauge" ValueStringFormat="c" HorizontalAlignment="Center"/>
            </StackPanel>

            <StackPanel Orientation="Vertical" Grid.Column="1" Grid.Row="1" Margin="0,7,0,5" HorizontalAlignment="Center">
                <TextBlock TextWrapping="Wrap" Height="49" Margin="0,0,0,4" TextAlignment="Center"
                           FontSize="18" FontWeight="DemiBold"
                           HorizontalAlignment="Center">Sales Compared<LineBreak />to Last Year</TextBlock>
                <dx:SimplePanel>
                    <local:SimpleGaugeControl x:Name="salesToLastYearGauge" ValueStringFormat="f2" HorizontalAlignment="Center" />
                    <TextBlock Margin="0,45,0,0" x:Name="salesToLastYearNA" TextAlignment="Center" HorizontalAlignment="Center" VerticalAlignment="Center">Not available.</TextBlock>
                </dx:SimplePanel>
            </StackPanel>

            <StackPanel Orientation="Vertical" Grid.Column="2" Grid.Row="1" Margin="0,7,15,5" HorizontalAlignment="Center">
                <TextBlock FontSize="18" TextWrapping="Wrap" Height="49" Margin="0,0,0,4" TextAlignment="Center"
                           FontWeight="DemiBold"
                           HorizontalAlignment="Center">Sales<LineBreak />to Target</TextBlock>
                <local:SimpleGaugeControl x:Name="salesToTargetGauge" ValueStringFormat="f2" HorizontalAlignment="Center" />
            </StackPanel>
        </Grid>
    </dxdb:DemoModuleControl>
</local:PivotGridDemoModule>!�using System;
using System.Linq;
using System.Windows;
using DevExpress.Xpf.DemoBase;
using DevExpress.Xpf.PivotGrid;
using DevExpress.Data.PivotGrid;
using DevExpress.Xpf.Core;
using System.Windows.Controls;

namespace PivotGridDemo.PivotGrid {
    public partial class Dashboard : PivotGridDemoModule {
        public Dashboard() {
            InitializeComponent();
            pivotGrid.DataSource = NWindData.ProductReports;
            SalesTarget = GetSalesTarget();
            UpdateKPIs();
        }

        protected double SalesTarget { get; private set; }

        void pivotGrid_GridLayout(object sender, RoutedEventArgs e) {
            UpdateKPIs();
        }

        void UpdateKPIs() {
            if(avgTransGauge == null) return;

            double avgTrans = GetAverageTransaction();
            avgTransGauge.Min = avgTrans < 400 ? avgTrans - 100 : 400;
            avgTransGauge.Max = (avgTrans > 800 ? (Math.Ceiling(avgTrans / 100) + 1) * 100 : 800);
            avgTransGauge.Value = avgTrans;

            double salesToLastYear = GetSalesToLastYear();
            if(salesToLastYear < 0) {
                salesToLastYearGauge.Visibility = Visibility.Collapsed;
                salesToLastYearNA.Visibility = Visibility.Visible;
            } else {
                salesToLastYearGauge.Visibility = Visibility.Visible;
                salesToLastYearNA.Visibility = Visibility.Collapsed;
                salesToLastYearGauge.Min = salesToLastYear < 1 ? 0 : 1;
                salesToLastYearGauge.Max = salesToLastYear < 1 ? 1 : (salesToLastYear > 2 ? Math.Ceiling(salesToLastYear) + 1 : 2);
                salesToLastYearGauge.Value = salesToLastYear;
            }

            double salesToTarget = GetSalesToTarget();
            salesToTargetGauge.Min = salesToTarget < 1 ? 0 : 1;
            salesToTargetGauge.Max = salesToTarget < 1 ? 1 : (salesToTarget > 2 ? Math.Ceiling(salesToTarget) + 1 : 2);
            salesToTargetGauge.Value = salesToTarget;
        }

        double GetAverageTransaction() {
            PivotDrillDownDataSource ds = pivotGrid.CreateDrillDownDataSource();
            if(ds.RowCount == 0) return 0;
            double transactionSum = 0;
            for(int i = 0; i < ds.RowCount; i++) {
                transactionSum += Convert.ToDouble(ds[i]["ProductSales"]);
            }
            return transactionSum / ds.RowCount;
        }

        double GetSalesToLastYear() {
            if(fieldYear.FilterValues.ValuesIncluded.Count() != 2
                    || pivotGrid.GetFieldCountByArea(FieldArea.DataArea) != 1) return -1;
            object[] years = fieldYear.FilterValues.ValuesIncluded;
            Array.Sort(years);
            double thisYear = Convert.ToDouble(pivotGrid.GetCellValue(new object[] { years[1] }, null)),
                lastYear = Convert.ToDouble(pivotGrid.GetCellValue(new object[] { years[0] }, null));
            return lastYear != 0 ? thisYear / lastYear : 1;
        }

        double GetSalesTarget() {
            if(!fieldYear.FilterValues.IsEmpty)
                throw new ArgumentException("!fieldYear.FilterValues.IsEmpty");
            object[] years = fieldYear.GetUniqueValues();
            Array.Sort(years);
            double year0Sales = Convert.ToDouble(pivotGrid.GetCellValue(new object[] { years[0] }, null));
            if(year0Sales == 0)
                throw new ArgumentException("no sales");
            return year0Sales * Convert.ToDouble(Math.Pow(1.3, years.Length));
        }

        double GetSalesToTarget() {
            if(pivotGrid.GetFieldCountByArea(FieldArea.DataArea) != 1) return 1;
            double sales = Convert.ToDouble(pivotGrid.GetCellValue(new object[0], new object[0]));
            return SalesTarget != 0 ? sales / SalesTarget : 1;
        }

        void ResetField(PivotGridField field, FieldArea area, int areaIndex) {
            field.Area = area;
            field.AreaIndex = areaIndex;
            field.FilterValues.Clear();
            field.FilterValues.FilterType = FieldFilterType.Excluded;
        }

        void Reset() {
            if(pivotGrid == null) return;
            pivotGrid.BeginUpdate();
            ResetField(fieldCategory, FieldArea.RowArea, 0);
            ResetField(fieldProduct, FieldArea.RowArea, 1);
            ResetField(fieldSales, FieldArea.DataArea, 0);
            ResetField(fieldYear, FieldArea.ColumnArea, 0);
            ResetField(fieldQuarter, FieldArea.ColumnArea, 1);
            pivotGrid.EndUpdate();
        }

        private void ListBoxEdit_SelectionChanged(object sender, RoutedEventArgs e) {
            switch(dashboardList.SelectedIndex) {
                case 0:
                    Reset();
                    pivotGrid.ExpandAll();
                    break;
                case 1:
                    pivotGrid.BeginUpdate();
                    Reset();
                    fieldYear.FilterValues.ValuesIncluded = new object[] { 1995, 1996 };
                    pivotGrid.EndUpdate();
                    pivotGrid.ExpandAllRows();
                    pivotGrid.CollapseAllColumns();
                    break;
                case 2:
                    pivotGrid.BeginUpdate();
                    Reset();
                    fieldCategory.FilterValues.ValuesIncluded = new object[] { "Beverages", "Condiments" };
                    pivotGrid.EndUpdate();
                    pivotGrid.ExpandAllColumns();
                    pivotGrid.CollapseAllRows();
                    break;
            }
        }
    }
    public class SimpleGaugeControl : Control {
        public static DependencyProperty MinProperty;
        public static DependencyProperty MaxProperty;
        public static DependencyProperty ValueProperty;
        public static DependencyProperty ValueStringFormatProperty;
        static SimpleGaugeControl() {
            Type ownerType = typeof(SimpleGaugeControl);
            MinProperty = DependencyProperty.Register("Min", typeof(double), ownerType, new PropertyMetadata(0d));
            MaxProperty = DependencyProperty.Register("Max", typeof(double), ownerType, new PropertyMetadata(10d));
            ValueProperty = DependencyProperty.Register("Value", typeof(double), ownerType, new PropertyMetadata(3d, UpdateDisplayText));
            ValueStringFormatProperty = DependencyProperty.Register("ValueStringFormat", typeof(string), ownerType, new PropertyMetadata(string.Empty, UpdateDisplayText));
        }
        static void UpdateDisplayText(DependencyObject d, DependencyPropertyChangedEventArgs e) {
            ((SimpleGaugeControl)d).UpdateDisplayText();
        }
        ContentControl textControl;
        public SimpleGaugeControl() {
            this.SetDefaultStyleKey(typeof(SimpleGaugeControl));
        }
        public double Value {
            get { return (double)GetValue(ValueProperty); }
            set { SetValue(ValueProperty, value); }
        }
        public double Min {
            get { return (double)GetValue(MinProperty); }
            set { SetValue(MinProperty, value); }
        }
        public double Max {
            get { return (double)GetValue(MaxProperty); }
            set { SetValue(MaxProperty, value); }
        }
        public string ValueStringFormat {
            get { return (string)GetValue(ValueStringFormatProperty); }
            set { SetValue(ValueStringFormatProperty, value); }
        }
        public override void OnApplyTemplate() {
            base.OnApplyTemplate();
            textControl = GetTemplateChild("PART_Text") as ContentControl;
            UpdateDisplayText();
        }
        void UpdateDisplayText() {
            if(textControl == null)
                return;
            string format = !string.IsNullOrEmpty(ValueStringFormat) ? "{0:" + ValueStringFormat + "}" : "{0}";
            textControl.Content = string.Format(format, Value);
        }
    }
}!�"MSBAML```����OKmscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0891&clr-namespace:System;assembly=mscorlibSystemI2clr-namespace:System.Collections;assembly=mscorlibSystem.CollectionsIEPivotGridDemo, Version=13.1.4.0, Culture=neutral, PublicKeyToken=nullA%clr-namespace:PivotGridDemo.PivotGridPivotGridDemo.PivotGrid1+PivotGridDemo.PivotGrid.FieldsCustomization\XPresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNWindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35WSPresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35D9http://schemas.microsoft.com/winfx/2006/xaml/presentationRNSystem.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:x,http://schemas.microsoft.com/winfx/2006/xaml6sys&clr-namespace:System;assembly=mscorlibJcollections2clr-namespace:System.Collections;assembly=mscorlib7local%clr-namespace:PivotGridDemo.PivotGridfbDevExpress.Xpf.PivotGrid.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aBdxpg7http://schemas.devexpress.com/winfx/2008/xaml/pivotgrida]DevExpress.Xpf.Core.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a?dxe5http://schemas.devexpress.com/winfx/2008/xaml/editorseaDevExpress.Xpf.DemoBase.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aAdxdb6http://schemas.devexpress.com/winfx/2008/xaml/demobase;dx2http://schemas.devexpress.com/winfx/2008/xaml/core�	Resources
 "SalesPersonFieldHeaderTemplate%DevExpress.Xpf.Core.SimplePanel��Padding�Path�Mode OrderFieldHeaderTemplate�%&	&	��.R�.+��$<��6/PivotGridDemo;component/Images/HeaderIcons/Person.png�$
��None=�$
�Left=�$�Center=�$�	0,-1,2,-1q���$�	textBlock��$18,0,0,0q�$�Right=����$DisplayText�$OneWay=���$ActualHeaderContentStyle���.R�.+��$;��5/PivotGridDemo;component/Images/HeaderIcons/Order.png�$
��None=�$
�Left=�$�Center=�$�	0,-1,2,-1q���$�	textBlock��$18,0,0,0q�$�Right=����$DisplayText�$OneWay=���$ActualHeaderContentStyle�.�/)DevExpress.Xpf.DemoBase.DemoModuleControl'!System.Windows.VisualStateManagerVisualStateGroups%System.Windows.VisualStateGroup-ShowLayoutListGroup��
States. System.Windows.VisualState-ShowAdvancedOptions��
Storyboard.��.��T���
TargetName$advancedOptions��g�	BeginTime$00:00:00X�	g�Duration$	00:00:00D�
��TargetProperty$
(UIElement.Visibility)�.�i�R�KeyTime$00:00:00��R�ValueSystem.Windows.VisibilityVisible=�W�$advancedOptions��$
Opacity�	
W�To$
1X�$00:00:00X�$	00:00:03D�-HideAdvancedOptions��.��.��W�$advancedOptions��$
Opacity�$
0X�$00:00:00X�$	00:00:01D�T�$advancedOptions��$00:00:01X�$
(UIElement.Visibility)�.�i�$00:00:00��
	Collapsed=�OptionsContent����Orientation$Vertical=�$	�240��.+�$DevExpress.Xpf.Core.GroupFrame$��Customization Settings��$
�0,0,0,4q�.���.+�& DevExpress.Xpf.Editors.CheckEdit-Content)	#DevExpress.Xpf.Core.ObjectConverter$Allow Field List	$
�0,0,6,4q�	IsChecked�$AllowCustomizationForm��ElementName$	pivotGrid��$TwoWay=�$*$Include Visible Fields In Field List	$
�0,0,6,4q��$#FieldListIncludeVisibleFields�$	pivotGrid��$TwoWay=�$ Group Fields In Field List	$
�0,0,6,4q��$GroupFieldsInFieldList�$	pivotGrid��$TwoWay=���$�Center=�Allow Hiding Fields:)
#DevExpress.Xpf.Editors.ComboBoxEdit
$�Center=�$
�Stretch=�'!DevExpress.Xpf.Editors.ButtonEditIsTextEditable.$
�0,4,0,0q�+%DevExpress.Xpf.Editors.LookUpEditBaseSelectedItem�$AllowHideFields�$	pivotGrid��
Items2
,DevExpress.Xpf.PivotGrid.AllowHideFieldsType
	Never=�

Always=�
WhenFieldListVisible=���$�Center=�$
�0,4,0,0q�Customization Style:
-
Name$customizationStyle��$�Center=�$
�Stretch=�.$
�0,4,0,0q�
SelectedIndex$0�-'DevExpress.Xpf.PivotGrid.FieldListStyle
Simple=�
	Excel2007=��-�Name$ShowHideFieldList��$
�0,8,0,0q�{��$AllowCustomizationForm�$	pivotGrid����$IsFieldListVisible�$	pivotGrid���	ConverterD>PivotGridDemo.PivotGrid.FieldListVisibleToCommandTextConverter-Name$advancedOptions��$%��Advanced Customization Settings��$
�0,4,0,4q�J�Opacity$0Q�$y�	Collapsed=�.���.+�$#Allow Filtering In Field List	$
�0,0,4,4q��$	pivotGrid��$AllowFilterInFieldList�$TwoWay=�$!Allow Sorting In Field List	$
�0,0,4,4q��$	pivotGrid��$AllowSortInFieldList�$TwoWay=�$ Is Field List Menu Enabled	$
�0,0,4,4q��$	pivotGrid��$IsFieldListMenuEnabled�$TwoWay=���$Vertical=�.+���$�Center=�$
�0,4,0,0q�Field List Layout:
-$
currentLayout��$�Center=�$
�Stretch=�.$
�0,4,0,0q��$FieldListLayout�$	pivotGrid��$TwoWay=�.(DevExpress.Xpf.PivotGrid.FieldListLayoutStackedDefault=�StackedSideBySide=�TopPanelOnly=�BottomPanelOnly2by2=�BottomPanelOnly1by4=���$�Center=�$
�0,4,0,0q� Allowed Customization Layouts:
-	$customizationLayouts��$�Center=�$
�Stretch=�.$
�0,4,0,0q�$0�60DevExpress.Xpf.PivotGrid.FieldListAllowedLayoutsStackedDefault=�StackedSideBySide=�TopPanelOnly=�BottomPanelOnly2by2=�BottomPanelOnly1by4=�
SelectedItemsStackedDefault=�StackedSideBySide=�TopPanelOnly=�BottomPanelOnly2by2=�BottomPanelOnly1by4=�

StyleSettings93DevExpress.Xpf.Editors.CheckedComboBoxStyleSettingsContent./)DevExpress.Xpf.PivotGrid.PivotGridControl-
Name$	pivotGrid��-'PivotGridDemo.PivotGrid.FieldAreaHelper FixAreas .!
ShowBorder!."RowTreeWidth$	"157�
#Fields#-'DevExpress.Xpf.PivotGrid.PivotGridField-$Name$$fieldOrderYear��%	FieldName$%	OrderDate��&
DisplayFolder$
&Date��'Area$'
FilterArea=�(	AreaIndex$(0�)Visible).*
GroupInterval$*DateYear=�+Caption$
+Year��-$$fieldOrderMonth��$%	OrderDate��$
&Date��$'
FilterArea=�).$(2�$*	DateMonth=�$+Month��-
$$
fieldOrderDay��$%	OrderDate��$
&Date��$'
FilterArea=�).$(3�$
*DateDay=�$	+Day��-$$fieldOrderDayOfWeek��$%	OrderDate��$
&Date��$'
FilterArea=�).$(4�$*
DateDayOfWeek=�$+Day Of Week��-$$fieldOrderDayOfYear��$%	OrderDate��$
&Date��$'
FilterArea=�).$(5�$*
DateDayOfYear=�$+Day Of Year��-$$fieldOrderAmount��$%Extended Price��$'DataArea=�$(0�,
CellFormat$,c��$&Orders��$+Order Amount��-$$fieldOrderQuarter��$%	OrderDate��$
&Date��$
'RowArea=�$(0�$*DateQuarter=�$
+Quarter��-ValueFormat$-Quarter {0}��-$$fieldCategoryName��$%CategoryName��$
'RowArea=�$(1�$+Category��$&Products��-$$fieldCountry��$
%Country��$'
ColumnArea=�$(0�$
+Country��$&	Geography��-$$fieldSalesPerson��$%Sales Person��$'
ColumnArea=�$(1�$+Sales Person��$&Sales Person��.HeaderTemplate#.[/HeaderListTemplate#/[-$$fieldFirstName��$%
First Name��$'
ColumnArea=�$(1�$+
First Name��$&Sales Person\Name��).-$$
fieldLastName��$%	Last Name��$'
ColumnArea=�$(1�$+	Last Name��$&Sales Person\Name��).-$$fieldOrderID��$
%OrderID��$'
FilterArea=�$+Order ID��).$&Orders��#.[#/[-$$
fieldQuantity��$%Quantity��$'DataArea=�$+Quantity��).$&Orders��-$$fieldUnitPrice��$%	UnitPrice��$'DataArea=�$+
Unit Price��).$&Orders��-$$
fieldDiscount��$%Discount��$'DataArea=�$+Discount��).$&Orders��-$$fieldExtendedPrice��$%
ExtendedPrice��$'DataArea=�$+Extended Price��).$&Orders��!-=<local:PivotGridDemoModule x:Class="PivotGridDemo.PivotGrid.FieldsCustomization"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:sys="clr-namespace:System;assembly=mscorlib"
    xmlns:collections="clr-namespace:System.Collections;assembly=mscorlib"
    xmlns:local="clr-namespace:PivotGridDemo.PivotGrid"
    xmlns:dxpg="http://schemas.devexpress.com/winfx/2008/xaml/pivotgrid"
    xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
    xmlns:dxdb="http://schemas.devexpress.com/winfx/2008/xaml/demobase"
    xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core">
    <local:PivotGridDemoModule.Resources>
        <ResourceDictionary>
            <DataTemplate x:Key="SalesPersonFieldHeaderTemplate">
                <dx:SimplePanel>
                    <Image Source="/PivotGridDemo;component/Images/HeaderIcons/Person.png" Stretch="None" HorizontalAlignment="Left"
                           VerticalAlignment="Center" Margin="0,-1,2,-1" />
                    <TextBlock Name="textBlock" Padding="18,0,0,0" Text="{Binding Path=DisplayText, Mode=OneWay}" HorizontalAlignment="Right"
                           Style="{Binding Path=ActualHeaderContentStyle}" />
                </dx:SimplePanel>
            </DataTemplate>
            <DataTemplate x:Key="OrderFieldHeaderTemplate">
                <dx:SimplePanel>
                    <Image Source="/PivotGridDemo;component/Images/HeaderIcons/Order.png" Stretch="None" HorizontalAlignment="Left"
                           VerticalAlignment="Center" Margin="0,-1,2,-1" />
                    <TextBlock Name="textBlock" Padding="18,0,0,0" Text="{Binding Path=DisplayText, Mode=OneWay}" HorizontalAlignment="Right"
                           Style="{Binding Path=ActualHeaderContentStyle}" />
                </dx:SimplePanel>
            </DataTemplate>
        </ResourceDictionary>
    </local:PivotGridDemoModule.Resources>

    <dxdb:DemoModuleControl>
        <VisualStateManager.VisualStateGroups>
            <VisualStateGroup x:Name="ShowLayoutListGroup">
                <VisualState x:Name="ShowAdvancedOptions">
                    <Storyboard>
                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="advancedOptions" BeginTime="00:00:00" Duration="00:00:00"  Storyboard.TargetProperty="(UIElement.Visibility)" >
                            <ObjectAnimationUsingKeyFrames.KeyFrames>
                                <DiscreteObjectKeyFrame KeyTime="00:00:00">
                                    <DiscreteObjectKeyFrame.Value>
                                        <Visibility>Visible</Visibility>
                                    </DiscreteObjectKeyFrame.Value>
                                </DiscreteObjectKeyFrame>
                            </ObjectAnimationUsingKeyFrames.KeyFrames>
                        </ObjectAnimationUsingKeyFrames>
                        <DoubleAnimation Storyboard.TargetName="advancedOptions" Storyboard.TargetProperty="Opacity"
                                                 To="1" BeginTime="00:00:00" Duration="00:00:03" />
                    </Storyboard>
                </VisualState>
                <VisualState x:Name="HideAdvancedOptions">
                    <Storyboard>
                        <DoubleAnimation Storyboard.TargetName="advancedOptions" Storyboard.TargetProperty="Opacity"
                                                 To="0" BeginTime="00:00:00" Duration="00:00:01" />
                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="advancedOptions" BeginTime="00:00:01" Storyboard.TargetProperty="(UIElement.Visibility)" >
                            <ObjectAnimationUsingKeyFrames.KeyFrames>
                                <DiscreteObjectKeyFrame KeyTime="00:00:00">
                                    <DiscreteObjectKeyFrame.Value>
                                        <Visibility>Collapsed</Visibility>
                                    </DiscreteObjectKeyFrame.Value>
                                </DiscreteObjectKeyFrame>
                            </ObjectAnimationUsingKeyFrames.KeyFrames>
                        </ObjectAnimationUsingKeyFrames>
                    </Storyboard>
                </VisualState>
            </VisualStateGroup>
        </VisualStateManager.VisualStateGroups>
        <dxdb:DemoModuleControl.OptionsContent>
            <StackPanel Orientation="Vertical" Width="240">
                <dx:GroupFrame Header="Customization Settings" Margin="0,0,0,4">
                    <StackPanel>
                        <dxe:CheckEdit IsChecked="{Binding Path=AllowCustomizationForm, ElementName=pivotGrid, Mode=TwoWay}"
                                       EditValueChanged="OnAllowCustomizationFormChanged" Content="Allow Field List" Margin="0,0,6,4" />
                        <dxe:CheckEdit IsChecked="{Binding Path=FieldListIncludeVisibleFields, ElementName=pivotGrid, Mode=TwoWay}"
                                       Content="Include Visible Fields In Field List" Margin="0,0,6,4" />
                        <dxe:CheckEdit IsChecked="{Binding Path=GroupFieldsInFieldList, ElementName=pivotGrid, Mode=TwoWay}"
                                       Content="Group Fields In Field List" Margin="0,0,6,4" />
                        <TextBlock VerticalAlignment="Center">Allow Hiding Fields:</TextBlock>
                        <dxe:ComboBoxEdit VerticalAlignment="Center" HorizontalAlignment="Stretch"
                                      IsTextEditable="False" Margin="0,4,0,0"
                                      SelectedItem="{Binding Path=AllowHideFields, ElementName=pivotGrid}">
                            <dxe:ComboBoxEdit.Items>
                                <dxpg:AllowHideFieldsType>Never</dxpg:AllowHideFieldsType>
                                <dxpg:AllowHideFieldsType>Always</dxpg:AllowHideFieldsType>
                                <dxpg:AllowHideFieldsType>WhenFieldListVisible</dxpg:AllowHideFieldsType>
                            </dxe:ComboBoxEdit.Items>
                        </dxe:ComboBoxEdit>
                        <TextBlock VerticalAlignment="Center" Margin="0,4,0,0">Customization Style:</TextBlock>
                        <dxe:ComboBoxEdit x:Name="customizationStyle" VerticalAlignment="Center" HorizontalAlignment="Stretch"
                                      IsTextEditable="False" Margin="0,4,0,0"
                                      SelectedIndex="0" SelectedIndexChanged="customizationStyle_SelectedIndexChanged">
                            <dxe:ComboBoxEdit.Items>
                                <dxpg:FieldListStyle>Simple</dxpg:FieldListStyle>
                                <dxpg:FieldListStyle>Excel2007</dxpg:FieldListStyle>
                            </dxe:ComboBoxEdit.Items>
                        </dxe:ComboBoxEdit>
                        <Button x:Name="ShowHideFieldList" Margin="0,8,0,0" Click="ShowHideFieldList_Click" IsEnabled="{Binding Path=AllowCustomizationForm, ElementName=pivotGrid}"
                            Content="{Binding Path=IsFieldListVisible, ElementName=pivotGrid, Converter={local:FieldListVisibleToCommandTextConverter}}" />
                    </StackPanel>
                </dx:GroupFrame>
                <dx:GroupFrame Header="Advanced Customization Settings" Margin="0,4,0,4" x:Name="advancedOptions" Opacity="0" Visibility="Collapsed">
                    <StackPanel>
                        <dxe:CheckEdit IsChecked="{Binding ElementName=pivotGrid, Path=AllowFilterInFieldList, Mode=TwoWay}"
                                   Content="Allow Filtering In Field List" Margin="0,0,4,4" />
                        <dxe:CheckEdit IsChecked="{Binding ElementName=pivotGrid, Path=AllowSortInFieldList, Mode=TwoWay}"
                                   Content="Allow Sorting In Field List" Margin="0,0,4,4" />
                        <dxe:CheckEdit IsChecked="{Binding ElementName=pivotGrid, Path=IsFieldListMenuEnabled, Mode=TwoWay}"
                                   Content="Is Field List Menu Enabled" Margin="0,0,4,4" />
                        <StackPanel Orientation="Vertical">
                            <TextBlock VerticalAlignment="Center" Margin="0,4,0,0">Field List Layout:</TextBlock>
                            <dxe:ComboBoxEdit VerticalAlignment="Center" HorizontalAlignment="Stretch" x:Name="currentLayout" EditValueChanged="OnCurrentLayoutEditValueChanged"
                                      IsTextEditable="False" Margin="0,4,0,0" SelectedItem="{Binding Path=FieldListLayout, ElementName=pivotGrid, Mode=TwoWay}">
                                <dxe:ComboBoxEdit.Items>
                                    <dxpg:FieldListLayout>StackedDefault</dxpg:FieldListLayout>
                                    <dxpg:FieldListLayout>StackedSideBySide</dxpg:FieldListLayout>
                                    <dxpg:FieldListLayout>TopPanelOnly</dxpg:FieldListLayout>
                                    <dxpg:FieldListLayout>BottomPanelOnly2by2</dxpg:FieldListLayout>
                                    <dxpg:FieldListLayout>BottomPanelOnly1by4</dxpg:FieldListLayout>
                                </dxe:ComboBoxEdit.Items>
                            </dxe:ComboBoxEdit>
                            <TextBlock VerticalAlignment="Center" Margin="0,4,0,0">Allowed Customization Layouts:</TextBlock>
                            <dxe:ComboBoxEdit x:Name="customizationLayouts" VerticalAlignment="Center" HorizontalAlignment="Stretch"
                                      IsTextEditable="False" Margin="0,4,0,0"
                                      SelectedIndex="0" EditValueChanged="OnCustomizationLayoutsEditValueChanged"
                                              PopupContentSelectionChanged="OnCustomizationLayoutsPopupContentSelectionChanged">
                                <dxe:ComboBoxEdit.Items>
                                    <dxpg:FieldListAllowedLayouts>StackedDefault</dxpg:FieldListAllowedLayouts>
                                    <dxpg:FieldListAllowedLayouts>StackedSideBySide</dxpg:FieldListAllowedLayouts>
                                    <dxpg:FieldListAllowedLayouts>TopPanelOnly</dxpg:FieldListAllowedLayouts>
                                    <dxpg:FieldListAllowedLayouts>BottomPanelOnly2by2</dxpg:FieldListAllowedLayouts>
                                    <dxpg:FieldListAllowedLayouts>BottomPanelOnly1by4</dxpg:FieldListAllowedLayouts>
                                </dxe:ComboBoxEdit.Items>
                                <dxe:ComboBoxEdit.SelectedItems>
                                    <dxpg:FieldListAllowedLayouts>StackedDefault</dxpg:FieldListAllowedLayouts>
                                    <dxpg:FieldListAllowedLayouts>StackedSideBySide</dxpg:FieldListAllowedLayouts>
                                    <dxpg:FieldListAllowedLayouts>TopPanelOnly</dxpg:FieldListAllowedLayouts>
                                    <dxpg:FieldListAllowedLayouts>BottomPanelOnly2by2</dxpg:FieldListAllowedLayouts>
                                    <dxpg:FieldListAllowedLayouts>BottomPanelOnly1by4</dxpg:FieldListAllowedLayouts>
                                </dxe:ComboBoxEdit.SelectedItems>
                                <dxe:ComboBoxEdit.StyleSettings>
                                    <dxe:CheckedComboBoxStyleSettings/>
                                </dxe:ComboBoxEdit.StyleSettings>
                            </dxe:ComboBoxEdit>
                        </StackPanel>
                    </StackPanel>
                </dx:GroupFrame>
            </StackPanel>
        </dxdb:DemoModuleControl.OptionsContent>
        <dxpg:PivotGridControl x:Name="pivotGrid" local:FieldAreaHelper.FixAreas="True" ShowBorder="False" RowTreeWidth="157" >
            <dxpg:PivotGridControl.Fields>
                <dxpg:PivotGridField x:Name="fieldOrderYear" FieldName="OrderDate" DisplayFolder="Date" Area="FilterArea" AreaIndex="0" Visible="False" GroupInterval="DateYear" Caption="Year" />
                <dxpg:PivotGridField x:Name="fieldOrderMonth" FieldName="OrderDate" DisplayFolder="Date" Area="FilterArea" Visible="False" AreaIndex="2" GroupInterval="DateMonth" Caption="Month" />
                <dxpg:PivotGridField x:Name="fieldOrderDay" FieldName="OrderDate" DisplayFolder="Date" Area="FilterArea" Visible="False" AreaIndex="3" GroupInterval="DateDay" Caption="Day" />
                <dxpg:PivotGridField x:Name="fieldOrderDayOfWeek" FieldName="OrderDate" DisplayFolder="Date" Area="FilterArea" Visible="False" AreaIndex="4" GroupInterval="DateDayOfWeek" Caption="Day Of Week" />
                <dxpg:PivotGridField x:Name="fieldOrderDayOfYear" FieldName="OrderDate" DisplayFolder="Date" Area="FilterArea" Visible="False" AreaIndex="5" GroupInterval="DateDayOfYear" Caption="Day Of Year" />
                <dxpg:PivotGridField x:Name="fieldOrderAmount" FieldName="Extended Price" Area="DataArea" AreaIndex="0" CellFormat="c" DisplayFolder="Orders" Caption="Order Amount" />
                <dxpg:PivotGridField x:Name="fieldOrderQuarter" FieldName="OrderDate" DisplayFolder="Date" Area="RowArea" AreaIndex="0" GroupInterval="DateQuarter"
                                 Caption="Quarter" ValueFormat="Quarter {0}" />

                <dxpg:PivotGridField x:Name="fieldCategoryName" FieldName="CategoryName" Area="RowArea" AreaIndex="1" Caption="Category" DisplayFolder="Products" />

                <dxpg:PivotGridField x:Name="fieldCountry" FieldName="Country" Area="ColumnArea" AreaIndex="0" Caption="Country" DisplayFolder="Geography" />
                <dxpg:PivotGridField x:Name="fieldSalesPerson" FieldName="Sales Person" Area="ColumnArea" AreaIndex="1" Caption="Sales Person"  DisplayFolder="Sales Person"
                                 HeaderTemplate="{StaticResource SalesPersonFieldHeaderTemplate}" HeaderListTemplate="{StaticResource SalesPersonFieldHeaderTemplate}" />
                <dxpg:PivotGridField x:Name="fieldFirstName" FieldName="First Name" Area="ColumnArea" AreaIndex="1" Caption="First Name"  DisplayFolder="Sales Person\Name" Visible="False"/>
                <dxpg:PivotGridField x:Name="fieldLastName" FieldName="Last Name" Area="ColumnArea" AreaIndex="1" Caption="Last Name"  DisplayFolder="Sales Person\Name" Visible="False" />

                <dxpg:PivotGridField x:Name="fieldOrderID" FieldName="OrderID" Area="FilterArea" Caption="Order ID" Visible="False"  DisplayFolder="Orders"
                                 HeaderTemplate="{StaticResource OrderFieldHeaderTemplate}" HeaderListTemplate="{StaticResource OrderFieldHeaderTemplate}" />
                <dxpg:PivotGridField x:Name="fieldQuantity" FieldName="Quantity" Area="DataArea" Caption="Quantity" Visible="False"  DisplayFolder="Orders" />
                <dxpg:PivotGridField x:Name="fieldUnitPrice" FieldName="UnitPrice" Area="DataArea" Caption="Unit Price" Visible="False"  DisplayFolder="Orders" />
                <dxpg:PivotGridField x:Name="fieldDiscount" FieldName="Discount" Area="DataArea" Caption="Discount" Visible="False"  DisplayFolder="Orders" />
                <dxpg:PivotGridField x:Name="fieldExtendedPrice" FieldName="ExtendedPrice" Area="DataArea" Caption="Extended Price" Visible="False"  DisplayFolder="Orders" />

            </dxpg:PivotGridControl.Fields>
        </dxpg:PivotGridControl>
    </dxdb:DemoModuleControl>
</local:PivotGridDemoModule>!Nusing System;
using System.Windows;
using DevExpress.Xpf.DemoBase;
using DevExpress.Xpf.PivotGrid;
using DevExpress.Xpf.Editors;
using DevExpress.Xpf.Core;
using System.Windows.Markup;
using System.Windows.Data;
using DevExpress.Xpf.Editors.Helpers;
using DevExpress.Xpf.Core.Native;
using DevExpress.Xpf.Editors.Popups;
using System.Windows.Controls;


namespace PivotGridDemo.PivotGrid {
    public partial class FieldsCustomization : PivotGridDemoModule {
        public FieldsCustomization() {
            InitializeComponent();
            pivotGrid.DataSource = NWindData.SalesPerson;
            pivotGrid.FieldListFactory = DefaultFieldListFactory.Instance;
        }

        protected override void RaiseIsPopupContentInvisibleChanged(DependencyPropertyChangedEventArgs e) {
            base.RaiseIsPopupContentInvisibleChanged(e);
            if(!IsPopupContentInvisible)
            pivotGrid.ShowFieldList();
        }

        void ShowHideFieldList_Click(object sender, RoutedEventArgs e) {
            pivotGrid.IsFieldListVisible = !pivotGrid.IsFieldListVisible;
        }

        void customizationStyle_SelectedIndexChanged(object sender, RoutedEventArgs e) {
            bool IsFieldListVisible = pivotGrid.IsFieldListVisible;
            pivotGrid.FieldListStyle = (FieldListStyle)customizationStyle.SelectedItem;
            pivotGrid.IsFieldListVisible = IsFieldListVisible;
            if(pivotGrid.FieldListStyle == FieldListStyle.Simple) {
                VisualStateManager.GoToState(this, "HideAdvancedOptions", true);

            } else {
                VisualStateManager.GoToState(this, "ShowAdvancedOptions", true);
            }
        }

        void OnAllowCustomizationFormChanged(object sender, EditValueChangedEventArgs e) {
            if(!IsLoaded)
                return;
            pivotGrid.IsFieldListVisible = pivotGrid.AllowCustomizationForm;
        }

        void OnCustomizationLayoutsEditValueChanged(object sender, EditValueChangedEventArgs e) {
            FieldListAllowedLayouts layout = (FieldListAllowedLayouts)customizationLayouts.SelectedItems[0];
            foreach(FieldListAllowedLayouts layout2 in customizationLayouts.SelectedItems)
                layout = layout | layout2;
            pivotGrid.FieldListAllowedLayouts = layout;
            EnsureCurrentLayoutItems(true);
        }

        void OnCustomizationLayoutsPopupContentSelectionChanged(object sender, SelectionChangedEventArgs e) {
            PopupBaseEditHelper.GetOkButton(customizationLayouts).IsEnabled = GetListBox().SelectedItems.Count > 0;
        }
        PopupListBox GetListBox() {
            return (PopupListBox)LayoutHelper.FindElement((FrameworkElement)PopupBaseEditHelper.GetPopup(customizationLayouts).PopupContent, IsListBox);
        }
        bool IsListBox(FrameworkElement d) {
            return d as PopupListBox != null;
        }

        void OnCurrentLayoutEditValueChanged(object sender, EditValueChangedEventArgs e) {
            EnsureCurrentLayoutItems(false);
        }

        void EnsureCurrentLayoutItems(bool includeCurrent) {
            currentLayout.Items.BeginUpdate();
            currentLayout.Items.Clear();
            foreach(FieldListAllowedLayouts layout2 in customizationLayouts.SelectedItems) {
                currentLayout.Items.Add(ToFieldListAllowedLayouts(layout2));
            }
            if(includeCurrent && !currentLayout.Items.Contains(pivotGrid.FieldListLayout))
                currentLayout.Items.Add(pivotGrid.FieldListLayout);
            currentLayout.Items.EndUpdate();
        }

        FieldListAllowedLayouts ToFieldListAllowedLayouts(FieldListLayout layout) {
            switch(layout) {
                case FieldListLayout.BottomPanelOnly1by4:
                    return FieldListAllowedLayouts.BottomPanelOnly1by4;
                case FieldListLayout.BottomPanelOnly2by2:
                    return FieldListAllowedLayouts.BottomPanelOnly2by2;
                case FieldListLayout.StackedDefault:
                    return FieldListAllowedLayouts.StackedDefault;
                case FieldListLayout.StackedSideBySide:
                    return FieldListAllowedLayouts.StackedSideBySide;
                case FieldListLayout.TopPanelOnly:
                    return FieldListAllowedLayouts.TopPanelOnly;
                default:
                    throw new NotImplementedException("FieldListLayout");
            }
        }

        FieldListLayout ToFieldListAllowedLayouts(FieldListAllowedLayouts layout) {
            switch(layout) {
                case FieldListAllowedLayouts.BottomPanelOnly1by4:
                    return FieldListLayout.BottomPanelOnly1by4;
                case FieldListAllowedLayouts.BottomPanelOnly2by2:
                    return FieldListLayout.BottomPanelOnly2by2;
                case FieldListAllowedLayouts.StackedDefault:
                    return FieldListLayout.StackedDefault;
                case FieldListAllowedLayouts.StackedSideBySide:
                    return FieldListLayout.StackedSideBySide;
                case FieldListAllowedLayouts.TopPanelOnly:
                    return FieldListLayout.TopPanelOnly;
                default:
                    return FieldListLayout.StackedDefault;
            }
        }
    }

    public class FieldListVisibleToCommandTextConverter : MarkupExtension, IValueConverter {
        #region IValueConverter Members
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
            switch((bool)value) {
                case false:
                    return "Show Field List";
                default:
                    return "Hide Field List";
            }
        }
        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
            throw new NotImplementedException();
        }
        #endregion

        public override object ProvideValue(IServiceProvider serviceProvider) {
            return this;
        }
    }
}!�MSBAML```����OKmscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0891&clr-namespace:System;assembly=mscorlibSystemI2clr-namespace:System.Collections;assembly=mscorlibSystem.CollectionsIEPivotGridDemo, Version=13.1.4.0, Culture=neutral, PublicKeyToken=nullA%clr-namespace:PivotGridDemo.PivotGridPivotGridDemo.PivotGrid)#PivotGridDemo.PivotGrid.FilterPopup\XPresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNWindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35WSPresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35D9http://schemas.microsoft.com/winfx/2006/xaml/presentationRNSystem.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:x,http://schemas.microsoft.com/winfx/2006/xaml6sys&clr-namespace:System;assembly=mscorlibJcollections2clr-namespace:System.Collections;assembly=mscorlib7local%clr-namespace:PivotGridDemo.PivotGridfbDevExpress.Xpf.PivotGrid.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aBdxpg7http://schemas.devexpress.com/winfx/2008/xaml/pivotgrida]DevExpress.Xpf.Core.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a?dxe5http://schemas.devexpress.com/winfx/2008/xaml/editorseaDevExpress.Xpf.DemoBase.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aAdxdb6http://schemas.devexpress.com/winfx/2008/xaml/demobase;dx2http://schemas.devexpress.com/winfx/2008/xaml/core.�/)DevExpress.Xpf.DemoBase.DemoModuleControlOptionsContent����Orientation$Vertical=�.+�$DevExpress.Xpf.Core.GroupFrame$��Filter Popup Options��.���$Vertical=�.+�& DevExpress.Xpf.Editors.CheckEditContent)#DevExpress.Xpf.Core.ObjectConverter$Enable Filter Popup Menu$
�0,0,6,4q�	IsChecked��Path$IsFilterPopupMenuEnabled��ElementName$	pivotGrid���Mode$TwoWay=�$& Show Only Available Filter Items$
�0,0,6,4q��$"ShowOnlyAvailableFilterItems�$	pivotGrid��$TwoWay=���$
Horizontal=�$
�0,1,0,0q�.+���$��Group Filter Mode:��$
�0,2,0,4q�)#DevExpress.Xpf.Editors.ComboBoxEdit$�52��'!DevExpress.Xpf.Editors.ButtonEditIsTextEditable.$
�6,0,6,4q�+%DevExpress.Xpf.Editors.LookUpEditBaseSelectedItem�$GroupFilterMode�$	pivotGrid��$TwoWay=�	Items	.(DevExpress.Xpf.PivotGrid.GroupFilterModeTree=�List=�
Content.
/	)DevExpress.Xpf.PivotGrid.PivotGridControl	-	Name$	pivotGrid��-
'PivotGridDemo.PivotGrid.FieldAreaHelper
FixAreas.
	RowTreeWidth$	
180�	
ShowBorder.#	ShowOnlyAvailableFilterItems.
	Fields-'DevExpress.Xpf.PivotGrid.PivotGridField-Name$
fieldCategory��	FieldName$CategoryName��Area$
RowArea=�Width$	100Q�Caption$Category��Group�$PivotGridGroup1��-$fieldProduct��$ProductName��$
RowArea=�$	200Q�$
Product���$PivotGridGroup1��-$	fieldYear��$	OrderDate��$
ColumnArea=�
GroupInterval$DateYear=�$
Year��$80Q��$PivotGridGroup2��-$fieldQuarter��$	OrderDate��$
ColumnArea=�$DateQuarter=�$
Quarter��ExpandedInFieldsGroup.$80Q�ValueFormat$Quarter {0}���$PivotGridGroup2��-$
fieldMonth��$	OrderDate��$
ColumnArea=�$	DateMonth=�$Month��$80Q��$PivotGridGroup2��-$fieldExtendedPrice��$Extended Price��$DataArea=�$	100Q�$Order Amount��.
	Groups-'DevExpress.Xpf.PivotGrid.PivotGridGroup-Name$PivotGridGroup1��-	$PivotGridGroup2��!�<local:PivotGridDemoModule x:Class="PivotGridDemo.PivotGrid.FilterPopup"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:sys="clr-namespace:System;assembly=mscorlib"
    xmlns:collections="clr-namespace:System.Collections;assembly=mscorlib"
    xmlns:local="clr-namespace:PivotGridDemo.PivotGrid"
    xmlns:dxpg="http://schemas.devexpress.com/winfx/2008/xaml/pivotgrid"
    xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
    xmlns:dxdb="http://schemas.devexpress.com/winfx/2008/xaml/demobase"
    xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core">

    <dxdb:DemoModuleControl>
        <dxdb:DemoModuleControl.OptionsContent>
            <StackPanel Orientation="Vertical">
                <dx:GroupFrame Header="Filter Popup Options">
                    <StackPanel Orientation="Vertical">
                        <dxe:CheckEdit IsChecked="{Binding Path=IsFilterPopupMenuEnabled, ElementName=pivotGrid, Mode=TwoWay}" Content="Enable Filter Popup Menu" Margin="0,0,6,4" />
                        <dxe:CheckEdit IsChecked="{Binding Path=ShowOnlyAvailableFilterItems, ElementName=pivotGrid, Mode=TwoWay}" Content="Show Only Available Filter Items" Margin="0,0,6,4" />
                        <StackPanel Orientation="Horizontal" Margin="0,1,0,0">
                            <TextBlock Text="Group Filter Mode:" Margin="0,2,0,4" />
                            <dxe:ComboBoxEdit SelectedItem="{Binding Path=GroupFilterMode, ElementName=pivotGrid, Mode=TwoWay}" Width="52" IsTextEditable="False" Margin="6,0,6,4">
                                <dxe:ComboBoxEdit.Items>
                                    <dxpg:GroupFilterMode>Tree</dxpg:GroupFilterMode>
                                    <dxpg:GroupFilterMode>List</dxpg:GroupFilterMode>
                                </dxe:ComboBoxEdit.Items>
                            </dxe:ComboBoxEdit>
                        </StackPanel>
                    </StackPanel>
                </dx:GroupFrame>
            </StackPanel>
        </dxdb:DemoModuleControl.OptionsContent>

        <dxpg:PivotGridControl x:Name="pivotGrid" local:FieldAreaHelper.FixAreas="True"
                               RowTreeWidth="180" Loaded="OnPivotGridLoaded" ShowBorder="False"
                               ShowOnlyAvailableFilterItems="True">
            <dxpg:PivotGridControl.Fields>
                <dxpg:PivotGridField x:Name="fieldCategory" FieldName="CategoryName" Area="RowArea" Width="100"
                                 Caption="Category" Group="{Binding ElementName=PivotGridGroup1}" />
                <dxpg:PivotGridField x:Name="fieldProduct" FieldName="ProductName" Area="RowArea" Width="200" Caption="Product"
                                 Group="{Binding ElementName=PivotGridGroup1}" />
                <dxpg:PivotGridField x:Name="fieldYear" FieldName="OrderDate" Area="ColumnArea" GroupInterval="DateYear" Caption="Year"
                                 Width="80" Group="{Binding ElementName=PivotGridGroup2}" />
                <dxpg:PivotGridField x:Name="fieldQuarter" FieldName="OrderDate" Area="ColumnArea" GroupInterval="DateQuarter" Caption="Quarter"
                                 ExpandedInFieldsGroup="False" Width="80" ValueFormat="Quarter {0}" Group="{Binding ElementName=PivotGridGroup2}" />
                <dxpg:PivotGridField x:Name="fieldMonth" FieldName="OrderDate" Area="ColumnArea" GroupInterval="DateMonth" Caption="Month"
                                 Width="80" Group="{Binding ElementName=PivotGridGroup2}" />
                <dxpg:PivotGridField x:Name="fieldExtendedPrice" FieldName="Extended Price" Area="DataArea" Width="100"
                                 Caption="Order Amount"
                                 ExpandedInFieldsGroup="False" />
            </dxpg:PivotGridControl.Fields>
            <dxpg:PivotGridControl.Groups>
                <dxpg:PivotGridGroup x:Name="PivotGridGroup1" />
                <dxpg:PivotGridGroup x:Name="PivotGridGroup2" />
            </dxpg:PivotGridControl.Groups>
        </dxpg:PivotGridControl>
    </dxdb:DemoModuleControl>
</local:PivotGridDemoModule>!wusing System.Windows;
using DevExpress.Xpf.DemoBase;
using DevExpress.Xpf.PivotGrid;

namespace PivotGridDemo.PivotGrid {
    public partial class FilterPopup : PivotGridDemoModule {

        public FilterPopup() {
            InitializeComponent();
            pivotGrid.DataSource = NWindData.SalesPerson;
        }

        void OnPivotGridLoaded(object sender, RoutedEventArgs e) {
            SetGroupFilter();
            SetFilter();
        }

        void SetGroupFilter() {
            if(PivotGridGroup1 == null || !PivotGridGroup1.FilterValues.IsEmpty) return;
            PivotGridGroup1.FilterValues.BeginUpdate();
            PivotGridGroup1.FilterValues.FilterType = FieldFilterType.Included;
            PivotGridGroup1.FilterValues.Values.Add("Beverages");
            PivotGridGroup1.FilterValues.EndUpdate();
            if(PivotGridGroup2 == null || !PivotGridGroup2.FilterValues.IsEmpty) return;
            PivotGridGroup2.FilterValues.BeginUpdate();
            PivotGridGroup2.FilterValues.FilterType = FieldFilterType.Included;
            PivotGridGroup2.FilterValues.Values.Add(1994).ChildValues.Add(3);
            PivotGridGroup2.FilterValues.Values[1994].ChildValues[3].ChildValues.Add(9);
            PivotGridGroup2.FilterValues.Values.Add(1995).ChildValues.Add(1);
            PivotGridGroup2.FilterValues.Values[1995].ChildValues.Add(4);
            PivotGridGroup2.FilterValues.EndUpdate();
        }

        void SetFilter() {
            fieldCategory.FilterValues.FilterType = FieldFilterType.Included;
            fieldCategory.FilterValues.Add("Beverages");
        }
    }
}!IMSBAML```����OKmscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0891&clr-namespace:System;assembly=mscorlibSystemI2clr-namespace:System.Collections;assembly=mscorlibSystem.CollectionsIEPivotGridDemo, Version=13.1.4.0, Culture=neutral, PublicKeyToken=nullA%clr-namespace:PivotGridDemo.PivotGridPivotGridDemo.PivotGrid+%PivotGridDemo.PivotGrid.GroupInterval\XPresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNWindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35WSPresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35D9http://schemas.microsoft.com/winfx/2006/xaml/presentationRNSystem.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:x,http://schemas.microsoft.com/winfx/2006/xaml6sys&clr-namespace:System;assembly=mscorlibJcollections2clr-namespace:System.Collections;assembly=mscorlib7local%clr-namespace:PivotGridDemo.PivotGridfbDevExpress.Xpf.PivotGrid.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aBdxpg7http://schemas.devexpress.com/winfx/2008/xaml/pivotgrida]DevExpress.Xpf.Core.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a?dxe5http://schemas.devexpress.com/winfx/2008/xaml/editorseaDevExpress.Xpf.DemoBase.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aAdxdb6http://schemas.devexpress.com/winfx/2008/xaml/demobase;dx2http://schemas.devexpress.com/winfx/2008/xaml/core1+PivotGridDemo.PivotGrid.PivotGridDemoModule
Loaded$ PivotGridDemoModule_Loaded���	Resources
 FieldHeaderTemplate%DevExpress.Xpf.Core.SimplePanel��Padding�Path�Mode�%&	��.R�.+��$;��5/PivotGridDemo;component/Images/HeaderIcons/Price.png�$
��None=�$�Center=�$
�Left=�$�	0,-1,2,-1q���$�	textBlock��$18,0,0,0q�$�Right=����$DisplayText�$OneWay=���$ActualHeaderContentStyle�.�/)DevExpress.Xpf.DemoBase.DemoModuleControlOptionsContent����Orientation$Vertical=�.+�$DevExpress.Xpf.Core.GroupFrame$��Group Settings��$
�0,0,0,4q�.���.+���$�Center=�$
�0,4,0,4q�)'Group Interval for the OrderDate field:)#DevExpress.Xpf.Editors.ComboBoxEdit-$�cbGroupInterval��$�Center=�$
�Stretch=�'!DevExpress.Xpf.Editors.ButtonEditIsTextEditable.$
�0,4,0,4q�& DevExpress.Xpf.Editors.CheckEdit-$�ceProductInterval��Content)#DevExpress.Xpf.Core.ObjectConverter$!Show Product Alphabetically$
�0,4,0,4q�		IsChecked	�
�ElementName$
fieldProductAlphabetical��$
Visible�$TwoWay=�Content./	)DevExpress.Xpf.PivotGrid.PivotGridControl	-	Name$	pivotGrid��-
'PivotGridDemo.PivotGrid.FieldAreaHelper

FixAreas
.	RowTreeWidth$	248�	ShowFilterHeaders.	
ShowBorder.
	Fields-'DevExpress.Xpf.PivotGrid.PivotGridField-Name$fieldProductAlphabetical��	FieldName$ProductName��UnboundFieldName$fieldProductAlphabetical��Area$
RowArea=�	AreaIndex$0�Caption$Product Alphabetical��
GroupInterval$Alphabetical=�Width$	155Q�-$fieldProductName��$ProductName��$
RowArea=�$1�$	155Q�$
Product��-$fieldExtendedPrice��$Extended Price��$DataArea=�$0�
CellFormat$c��HeaderTemplate#[HeaderListTemplate#[-$fieldOrderDate��$	OrderDate��$fieldOrderDate��$
ColumnArea=�$0�$	DateMonth=�$
Order Date��!�<local:PivotGridDemoModule x:Class="PivotGridDemo.PivotGrid.GroupInterval"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:sys="clr-namespace:System;assembly=mscorlib"
    xmlns:collections="clr-namespace:System.Collections;assembly=mscorlib"
    xmlns:local="clr-namespace:PivotGridDemo.PivotGrid"
    xmlns:dxpg="http://schemas.devexpress.com/winfx/2008/xaml/pivotgrid"
    xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
    xmlns:dxdb="http://schemas.devexpress.com/winfx/2008/xaml/demobase"
    xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core" Loaded="PivotGridDemoModule_Loaded">
    <local:PivotGridDemoModule.Resources>
        <ResourceDictionary>
            <DataTemplate x:Key="FieldHeaderTemplate">
                <dx:SimplePanel>
                    <Image Source="/PivotGridDemo;component/Images/HeaderIcons/Price.png" Stretch="None" VerticalAlignment="Center"
                            HorizontalAlignment="Left" Margin="0,-1,2,-1" />
                    <TextBlock Name="textBlock" Padding="18,0,0,0" Text="{Binding Path=DisplayText, Mode=OneWay}" HorizontalAlignment="Right"
                             Style="{Binding Path=ActualHeaderContentStyle}" />
                </dx:SimplePanel>
            </DataTemplate>
        </ResourceDictionary>
    </local:PivotGridDemoModule.Resources>
    <dxdb:DemoModuleControl>
        <dxdb:DemoModuleControl.OptionsContent>
            <StackPanel Orientation="Vertical">
                <dx:GroupFrame Header="Group Settings" Margin="0,0,0,4">
                    <StackPanel>
                        <TextBlock VerticalAlignment="Center" Margin="0,4,0,4">Group Interval for the OrderDate field:</TextBlock>
                        <dxe:ComboBoxEdit Name="cbGroupInterval" VerticalAlignment="Center" HorizontalAlignment="Stretch"
                                      IsTextEditable="False" Margin="0,4,0,4" SelectedIndexChanged="cbGroupInterval_SelectedIndexChanged" />
                        <dxe:CheckEdit Name="ceProductInterval" IsChecked="{Binding ElementName=fieldProductAlphabetical, Path=Visible, Mode=TwoWay}"
                                   Content="Show Product Alphabetically" Margin="0,4,0,4" />
                    </StackPanel>
                </dx:GroupFrame>
            </StackPanel>
        </dxdb:DemoModuleControl.OptionsContent>
        <dxpg:PivotGridControl x:Name="pivotGrid" local:FieldAreaHelper.FixAreas="True"
                               RowTreeWidth="248" ShowFilterHeaders="False" FieldValueDisplayText="pivotGrid_FieldValueDisplayText" ShowBorder="False">
            <dxpg:PivotGridControl.Fields>
                <dxpg:PivotGridField x:Name="fieldProductAlphabetical" FieldName="ProductName" UnboundFieldName="fieldProductAlphabetical"
                                    Area="RowArea" AreaIndex="0"
                                    Caption="Product Alphabetical" GroupInterval="Alphabetical"
                                    Width="155" />
                <dxpg:PivotGridField x:Name="fieldProductName" FieldName="ProductName" Area="RowArea" AreaIndex="1"
                                    Width="155" Caption="Product" />
                <dxpg:PivotGridField x:Name="fieldExtendedPrice" FieldName="Extended Price" Area="DataArea" AreaIndex="0"
                                    CellFormat="c" HeaderTemplate="{StaticResource ResourceKey=FieldHeaderTemplate}"
                                    HeaderListTemplate="{StaticResource ResourceKey=FieldHeaderTemplate}" />
                <dxpg:PivotGridField x:Name="fieldOrderDate" FieldName="OrderDate" UnboundFieldName="fieldOrderDate"
                                    Area="ColumnArea" AreaIndex="0"
                                    GroupInterval="DateMonth" Caption="Order Date" />
            </dxpg:PivotGridControl.Fields>
        </dxpg:PivotGridControl>
    </dxdb:DemoModuleControl>
</local:PivotGridDemoModule>!iusing System;
using System.Windows;
using DevExpress.Xpf.DemoBase;
using DevExpress.Xpf.PivotGrid;
using DevExpress.Xpf.Editors;
using DevExpress.Data.Mask;

namespace PivotGridDemo.PivotGrid {
    public partial class GroupInterval : PivotGridDemoModule {
        public GroupInterval() {
            InitializeComponent();
            pivotGrid.DataSource = NWindData.SalesPerson;
        }
        void PivotGridDemoModule_Loaded(object sender, RoutedEventArgs e) {
            InitComboBoxes();
            ceProductInterval.IsChecked = true;
        }
        void InitComboBoxes() {
            Array arr = EnumHelper.GetValues(typeof(FieldGroupInterval));
            foreach(FieldGroupInterval interval in arr)
                if(interval.ToString().IndexOf("Date") == 0)
                    cbGroupInterval.Items.Add(new ComboBoxEditItem() { Content = interval.ToString(), Tag = interval });
            cbGroupInterval.SelectedIndex = cbGroupInterval.Items.Count - 1;
        }
        void pivotGrid_FieldValueDisplayText(object sender, PivotFieldDisplayTextEventArgs e) {
            if(object.ReferenceEquals(e.Field, fieldOrderDate) && e.Field.GroupInterval == FieldGroupInterval.DateQuarter) {
                e.DisplayText = string.Format("Qtr {0}", e.Value);
                if(e.ValueType == FieldValueType.Total) e.DisplayText += " Total";
            }
        }
        void cbGroupInterval_SelectedIndexChanged(object sender, RoutedEventArgs e) {
            if(cbGroupInterval.SelectedIndex < 0)
                return;
            fieldOrderDate.FilterValues.Clear();
            fieldOrderDate.GroupInterval = (FieldGroupInterval)((ComboBoxEditItem)cbGroupInterval.SelectedItem).Tag;
            fieldOrderDate.Caption = string.Format("Order Date ({0})", fieldOrderDate.GroupInterval.ToString().Replace("Date", ""));
        }
    }
}!dMSBAML```����OKmscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0891&clr-namespace:System;assembly=mscorlibSystemI2clr-namespace:System.Collections;assembly=mscorlibSystem.CollectionsIEPivotGridDemo, Version=13.1.4.0, Culture=neutral, PublicKeyToken=nullA%clr-namespace:PivotGridDemo.PivotGridPivotGridDemo.PivotGrid$PivotGridDemo.PivotGrid.Groups\XPresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNWindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35WSPresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35D9http://schemas.microsoft.com/winfx/2006/xaml/presentationRNSystem.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:x,http://schemas.microsoft.com/winfx/2006/xaml6sys&clr-namespace:System;assembly=mscorlibJcollections2clr-namespace:System.Collections;assembly=mscorlib7local%clr-namespace:PivotGridDemo.PivotGridfbDevExpress.Xpf.PivotGrid.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aBdxpg7http://schemas.devexpress.com/winfx/2008/xaml/pivotgrida]DevExpress.Xpf.Core.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a?dxe5http://schemas.devexpress.com/winfx/2008/xaml/editorseaDevExpress.Xpf.DemoBase.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aAdxdb6http://schemas.devexpress.com/winfx/2008/xaml/demobase;dx2http://schemas.devexpress.com/winfx/2008/xaml/core.�/)DevExpress.Xpf.DemoBase.DemoModuleControl(!SupressGroupFramePaddingInOptions.OptionsContent����Orientation$Vertical=�.+��-$�ButtonCollapse��$�Collapse All Groups��$
�4,2,4,2q��-$�ButtonExpand��$�Expand All Groups��$
�4,2,4,2q�$�0,10,0,0q�Content./)DevExpress.Xpf.PivotGrid.PivotGridControl-Name$	pivotGrid��-'PivotGridDemo.PivotGrid.FieldAreaHelperFixAreas.RowTreeWidth$	200�
ShowBorder.
Fields-'DevExpress.Xpf.PivotGrid.PivotGridField-	Name$	
fieldCategory��
	FieldName$
CategoryName��Area$
RowArea=�Width$	100Q�
Caption$
Category��Group��ElementName$PivotGridGroup1��-$	fieldProduct��$
ProductName��$
RowArea=�$	200Q�$

Product���$PivotGridGroup1��-$		fieldYear��$
	OrderDate��$
ColumnArea=�
GroupInterval$DateYear=�$

Year��$80Q��$PivotGridGroup2��-$	fieldQuarter��$
	OrderDate��$
ColumnArea=�$DateQuarter=�$

Quarter��ExpandedInFieldsGroup.$80Q�ValueFormat$Quarter {0}���$PivotGridGroup2��-$	
fieldMonth��$
	OrderDate��$
ColumnArea=�$	DateMonth=�$
Month��$80Q��$PivotGridGroup2��-	$	fieldExtendedPrice��$
Extended Price��$DataArea=�$	100Q�$
Order Amount��.�$PivotGridGroup3��-
$	
fieldQuantity��$
Quantity��$DataArea=�$	100Q�$
Quantity���$PivotGridGroup3��-$	
fieldDiscount��$
Discount��$DataArea=�$	100Q�$
Discount (Avr)��SummaryType$
Average=�
CellFormat$p���$PivotGridGroup3��
Groups-'DevExpress.Xpf.PivotGrid.PivotGridGroup-Name$PivotGridGroup1��-
$PivotGridGroup2��-$PivotGridGroup3��!�<local:PivotGridDemoModule x:Class="PivotGridDemo.PivotGrid.Groups"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:sys="clr-namespace:System;assembly=mscorlib"
    xmlns:collections="clr-namespace:System.Collections;assembly=mscorlib"
    xmlns:local="clr-namespace:PivotGridDemo.PivotGrid"
    xmlns:dxpg="http://schemas.devexpress.com/winfx/2008/xaml/pivotgrid"
    xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
    xmlns:dxdb="http://schemas.devexpress.com/winfx/2008/xaml/demobase"
    xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core">

    <dxdb:DemoModuleControl SupressGroupFramePaddingInOptions="False">
        <dxdb:DemoModuleControl.OptionsContent>
            <StackPanel Orientation="Vertical">
                <Button Content="Collapse All Groups" Click="Expand_Click" Name="ButtonCollapse" Padding="4,2,4,2" />
                <Button Content="Expand All Groups" Click="Collapse_Click" Name="ButtonExpand" Padding="4,2,4,2" Margin="0,10,0,0" />
            </StackPanel>
        </dxdb:DemoModuleControl.OptionsContent>

        <dxpg:PivotGridControl x:Name="pivotGrid" local:FieldAreaHelper.FixAreas="True"
                               RowTreeWidth="200" ShowBorder="False">
            <dxpg:PivotGridControl.Fields>
                <dxpg:PivotGridField x:Name="fieldCategory" FieldName="CategoryName" Area="RowArea" Width="100"
                                 Caption="Category" Group="{Binding ElementName=PivotGridGroup1}" />
                <dxpg:PivotGridField x:Name="fieldProduct" FieldName="ProductName" Area="RowArea" Width="200" Caption="Product"
                                 Group="{Binding ElementName=PivotGridGroup1}" />
                <dxpg:PivotGridField x:Name="fieldYear" FieldName="OrderDate" Area="ColumnArea" GroupInterval="DateYear" Caption="Year"
                                 Width="80" Group="{Binding ElementName=PivotGridGroup2}" />
                <dxpg:PivotGridField x:Name="fieldQuarter" FieldName="OrderDate" Area="ColumnArea" GroupInterval="DateQuarter" Caption="Quarter"
                                 ExpandedInFieldsGroup="False" Width="80" ValueFormat="Quarter {0}" Group="{Binding ElementName=PivotGridGroup2}" />
                <dxpg:PivotGridField x:Name="fieldMonth" FieldName="OrderDate" Area="ColumnArea" GroupInterval="DateMonth" Caption="Month"
                                 Width="80" Group="{Binding ElementName=PivotGridGroup2}" />
                <dxpg:PivotGridField x:Name="fieldExtendedPrice" FieldName="Extended Price" Area="DataArea" Width="100"
                                 Caption="Order Amount"
                                 ExpandedInFieldsGroup="False" Group="{Binding ElementName=PivotGridGroup3}" />
                <dxpg:PivotGridField x:Name="fieldQuantity" FieldName="Quantity" Area="DataArea" Width="100"
                                 Caption="Quantity"
                                 Group="{Binding ElementName=PivotGridGroup3}" />
                <dxpg:PivotGridField x:Name="fieldDiscount" FieldName="Discount" Area="DataArea" Width="100"
                                 Caption="Discount (Avr)" SummaryType="Average"
                                 CellFormat="p" Group="{Binding ElementName=PivotGridGroup3}" />
            </dxpg:PivotGridControl.Fields>
            <dxpg:PivotGridControl.Groups>
                <dxpg:PivotGridGroup x:Name="PivotGridGroup1" />
                <dxpg:PivotGridGroup x:Name="PivotGridGroup2" />
                <dxpg:PivotGridGroup x:Name="PivotGridGroup3" />
            </dxpg:PivotGridControl.Groups>
        </dxpg:PivotGridControl>
    </dxdb:DemoModuleControl>
</local:PivotGridDemoModule>!zusing System;
using System.Windows.Data;
using System.Windows.Markup;
using DevExpress.Xpf.DemoBase;
using System.Windows;
using DevExpress.Xpf.Core;
using DevExpress.Xpf.PivotGrid;

namespace PivotGridDemo.PivotGrid {
    public partial class Groups : PivotGridDemoModule {
        bool isExpanded;

        public Groups() {
            InitializeComponent();
            pivotGrid.DataSource = NWindData.SalesPerson;
        }
        void UpdateGroupsExpanded() {
            pivotGrid.BeginUpdate();
            try {
                foreach(PivotGridGroup group in pivotGrid.Groups)
                    foreach(PivotGridField field in group)
                        field.ExpandedInFieldsGroup = isExpanded;
            } finally {
                pivotGrid.EndUpdate();
            }
        }


        private void Collapse_Click(object sender, RoutedEventArgs e) {
            isExpanded = true;
            UpdateGroupsExpanded();
        }

        private void Expand_Click(object sender, RoutedEventArgs e) {
            isExpanded = false;
            UpdateGroupsExpanded();
        }
    }
}!�MSBAML```����OKmscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0891&clr-namespace:System;assembly=mscorlibSystemI2clr-namespace:System.Collections;assembly=mscorlibSystem.CollectionsIEPivotGridDemo, Version=13.1.4.0, Culture=neutral, PublicKeyToken=nullA%clr-namespace:PivotGridDemo.PivotGridPivotGridDemo.PivotGrid,&PivotGridDemo.PivotGrid.MultipleTotals\XPresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNWindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35WSPresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35D9http://schemas.microsoft.com/winfx/2006/xaml/presentationRNSystem.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:x,http://schemas.microsoft.com/winfx/2006/xaml6sys&clr-namespace:System;assembly=mscorlibJcollections2clr-namespace:System.Collections;assembly=mscorlib7local%clr-namespace:PivotGridDemo.PivotGridfbDevExpress.Xpf.PivotGrid.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aBdxpg7http://schemas.devexpress.com/winfx/2008/xaml/pivotgrida]DevExpress.Xpf.Core.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a?dxe5http://schemas.devexpress.com/winfx/2008/xaml/editors;dx2http://schemas.devexpress.com/winfx/2008/xaml/coreeaDevExpress.Xpf.DemoBase.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aAdxdb6http://schemas.devexpress.com/winfx/2008/xaml/demobase.�/)DevExpress.Xpf.DemoBase.DemoModuleControlContent./)DevExpress.Xpf.PivotGrid.PivotGridControl-Name$	pivotGrid��-'PivotGridDemo.PivotGrid.FieldAreaHelperFixAreas.RowTreeWidth$	200�
ShowBorder.
Fields-'DevExpress.Xpf.PivotGrid.PivotGridField-Name$
fieldCategory��	FieldName$CategoryName��Area$
RowArea=�	Width$		100Q�
Caption$
Category��TotalsVisibility$CustomTotals=�CustomTotals3-DevExpress.Xpf.PivotGrid.PivotGridCustomTotal
SummaryType$

Average=�$	
Sum=�$	
Max=�$	
Min=�$
Count=�-$fieldProduct��$ProductName��$
RowArea=�$		200Q�$
Product��-$	fieldYear��$	OrderDate��$
ColumnArea=�
GroupInterval$DateYear=�$

Year��$	80Q�Group��ElementName$PivotGridGroup1��-$fieldQuarter��$	OrderDate��$
ColumnArea=�$DateQuarter=�$
Quarter��$	80Q�ValueFormat$Quarter {0}���$PivotGridGroup1��-$
fieldQuantity��$Quantity��$DataArea=�$		100Q�$
Quantity��
CellFormat$f2���$PivotGridGroup2��-$fieldExtendedPrice��$Extended Price��$DataArea=�$		100Q�$
Extended Price���$PivotGridGroup2��
Groups-'DevExpress.Xpf.PivotGrid.PivotGridGroup-Name$PivotGridGroup1��-	$PivotGridGroup2��!<local:PivotGridDemoModule x:Class="PivotGridDemo.PivotGrid.MultipleTotals"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:sys="clr-namespace:System;assembly=mscorlib"
    xmlns:collections="clr-namespace:System.Collections;assembly=mscorlib"
    xmlns:local="clr-namespace:PivotGridDemo.PivotGrid"
    xmlns:dxpg="http://schemas.devexpress.com/winfx/2008/xaml/pivotgrid"
    xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
    xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
    xmlns:dxdb="http://schemas.devexpress.com/winfx/2008/xaml/demobase">

    <dxdb:DemoModuleControl>
        <dxpg:PivotGridControl local:FieldAreaHelper.FixAreas="True" x:Name="pivotGrid" RowTreeWidth="200"
                ShowBorder="False">
            <dxpg:PivotGridControl.Fields>
                <dxpg:PivotGridField x:Name="fieldCategory" FieldName="CategoryName" Area="RowArea" Width="100" Caption="Category"
                                 TotalsVisibility="CustomTotals">
                    <dxpg:PivotGridField.CustomTotals>
                        <dxpg:PivotGridCustomTotal SummaryType="Average" />
                        <dxpg:PivotGridCustomTotal SummaryType="Sum" />
                        <dxpg:PivotGridCustomTotal SummaryType="Max" />
                        <dxpg:PivotGridCustomTotal SummaryType="Min" />
                        <dxpg:PivotGridCustomTotal SummaryType="Count" />
                    </dxpg:PivotGridField.CustomTotals>
                </dxpg:PivotGridField>
                <dxpg:PivotGridField x:Name="fieldProduct" FieldName="ProductName" Area="RowArea" Width="200" Caption="Product" />
                <dxpg:PivotGridField x:Name="fieldYear" FieldName="OrderDate" Area="ColumnArea" GroupInterval="DateYear" Caption="Year"
                                 Width="80" Group="{Binding ElementName=PivotGridGroup1}" />
                <dxpg:PivotGridField x:Name="fieldQuarter" FieldName="OrderDate" Area="ColumnArea" GroupInterval="DateQuarter" Caption="Quarter"
                                 Width="80" ValueFormat="Quarter {0}" Group="{Binding ElementName=PivotGridGroup1}" />
                <dxpg:PivotGridField x:Name="fieldQuantity" FieldName="Quantity" Area="DataArea" Width="100" Caption="Quantity" CellFormat="f2"
                                 Group="{Binding ElementName=PivotGridGroup2}" />
                <dxpg:PivotGridField x:Name="fieldExtendedPrice" FieldName="Extended Price" Area="DataArea" Width="100" Caption="Extended Price"
                                 Group="{Binding ElementName=PivotGridGroup2}" />
            </dxpg:PivotGridControl.Fields>
            <dxpg:PivotGridControl.Groups>
                <dxpg:PivotGridGroup x:Name="PivotGridGroup1" />
                <dxpg:PivotGridGroup x:Name="PivotGridGroup2" />
            </dxpg:PivotGridControl.Groups>
        </dxpg:PivotGridControl>
    </dxdb:DemoModuleControl>
</local:PivotGridDemoModule>!6using System;
using System.Windows.Data;
using System.Windows.Markup;
using DevExpress.Xpf.DemoBase;
using System.Windows;
using DevExpress.Xpf.Core;
using DevExpress.Xpf.PivotGrid;

namespace PivotGridDemo.PivotGrid {
    public partial class MultipleTotals : PivotGridDemoModule {

        public MultipleTotals() {
            InitializeComponent();
            pivotGrid.DataSource = NWindData.SalesPerson;
            fieldYear.FilterValues.FilterType = FieldFilterType.Included;
            fieldYear.FilterValues.Add(1995);
        }
    }
}!MSBAML```����IEPivotGridDemo, Version=13.1.4.0, Culture=neutral, PublicKeyToken=nullA%clr-namespace:PivotGridDemo.PivotGridPivotGridDemo.PivotGridOKmscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0891&clr-namespace:System;assembly=mscorlibSystem)#PivotGridDemo.PivotGrid.OLAPBrowser\XPresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNWindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35WSPresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35D9http://schemas.microsoft.com/winfx/2006/xaml/presentationRNSystem.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:x,http://schemas.microsoft.com/winfx/2006/xaml7local%clr-namespace:PivotGridDemo.PivotGridfbDevExpress.Xpf.PivotGrid.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aBdxpg7http://schemas.devexpress.com/winfx/2008/xaml/pivotgrida]DevExpress.Xpf.Core.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a?dxe5http://schemas.devexpress.com/winfx/2008/xaml/editors;dx2http://schemas.devexpress.com/winfx/2008/xaml/corejfDevExpress.Xpf.LayoutControl.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aFdxlc;http://schemas.devexpress.com/winfx/2008/xaml/layoutcontrole	aDevExpress.Xpf.DemoBase.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aAdxdb6http://schemas.devexpress.com/winfx/2008/xaml/demobase	0sys&clr-namespace:System;assembly=mscorlib	$	�515��$	�937���	Resources
�MergedDictionaries
�Source/)DevExpress.Xpf.Core.BoolToObjectConverter inverseBoolConverter	TrueValue
FalseValue��$KE/PivotGridDemo;component/Controls/ControlStyles/DataSourceDialog.xaml?�%4&	�	False��True�.�/	)DevExpress.Xpf.DemoBase.DemoModuleControl'!System.Windows.VisualStateManagerVisualStateGroups%System.Windows.VisualStateGroup-ShowErrorMessageGroup��
States. System.Windows.VisualState-ShowErrorMessage��
Storyboard.��.��W���
TargetName$errorBorder��	��TargetProperty$
	Opacity�
W�From$
0X�	W�To$1X�g�	BeginTime$00:00:00X�
g�Duration$
	00:00:0.7D�W�$errorBorder��$	Height�$
0X�$70X�$00:00:00X�$
	00:00:0.7D�T�$errorBorder��$00:00:00X�$	(UIElement.Visibility)�.�i�R�KeyTime$00:00:00��R�ValueSystem.Windows.VisibilityVisible=�-HideErrorMessage��.��.��W�$errorBorder��$
	Opacity�$
1X�$0X�$00:00:00X�$
	00:00:0.7D�W�$errorBorder��$	Height�$
70X�$0X�$00:00:00X�$
	00:00:0.7D�T�$errorBorder��$	00:00:0.7X�$	(UIElement.Visibility)�.�i�$00:00:00��
	Collapsed=�Content.��RowDefinitions�$
��Auto��$��*�.+��-�Name$errorBorder��$y�	Collapsed=�._��$��1q�
�����CornerRadius$5���Padding$14q�$�3q�._���-��Name$	errorText��4.DevExpress.Xpf.LayoutControl.DockLayoutControl$��1�.+��Dock$Right=�AllowHorizontalSizing.$	6,8,12,12q�$	�300�����*
Background+�ElementName$	pivotGrid��._���$
��Auto��$��30��$��*�.+��-�Name$showConnectionButton��$�New Connection��$��1�$
�0,0,0,7q�{��*IsMainWaitIndicatorVisible+$	pivotGrid���	Converter#[93DevExpress.Xpf.PivotGrid.PivotExcelFieldListControl-Name$	fieldList��$��2�$
�Stretch=�2	,DevExpress.Xpf.Core.ColumnChooserControlBase	Owner�$	pivotGrid��/
)DevExpress.Xpf.PivotGrid.PivotGridControl
-
Name$	pivotGrid��
ShowFilterHeaders.
ShowDataHeaders. 
ShowColumnHeaders .!
ShowRowHeaders!..$Client=�$
�0,0,6,0q�"
RowTreeWidth$	"202�#
FieldListSplitterY$	#200Q�$��2�$
�Stretch=�$

ShowBorder$.!�<local:PivotGridDemoModule x:Class="PivotGridDemo.PivotGrid.OLAPBrowser"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:PivotGridDemo.PivotGrid"
    xmlns:dxpg="http://schemas.devexpress.com/winfx/2008/xaml/pivotgrid"
    xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
    xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
    xmlns:dxlc="http://schemas.devexpress.com/winfx/2008/xaml/layoutcontrol"
    xmlns:dxdb="http://schemas.devexpress.com/winfx/2008/xaml/demobase"
    xmlns:sys="clr-namespace:System;assembly=mscorlib"
    Height="515" Width="937">
    <local:PivotGridDemoModule.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="/PivotGridDemo;component/Controls/ControlStyles/DataSourceDialog.xaml" />
            </ResourceDictionary.MergedDictionaries>
            <dx:BoolToObjectConverter x:Key="inverseBoolConverter" >
                <dx:BoolToObjectConverter.TrueValue>
                    <sys:Boolean>False</sys:Boolean>
                </dx:BoolToObjectConverter.TrueValue>
                <dx:BoolToObjectConverter.FalseValue>
                    <sys:Boolean>True</sys:Boolean>
                </dx:BoolToObjectConverter.FalseValue>
            </dx:BoolToObjectConverter>
        </ResourceDictionary>
    </local:PivotGridDemoModule.Resources>

    <dxdb:DemoModuleControl>
        <VisualStateManager.VisualStateGroups>
            <VisualStateGroup x:Name="ShowErrorMessageGroup">
                <VisualState x:Name="ShowErrorMessage">
                    <Storyboard>
                        <DoubleAnimation Storyboard.TargetName="errorBorder" Storyboard.TargetProperty="Opacity" From="0" To="1" BeginTime="00:00:00" Duration="00:00:0.7" />
                        <DoubleAnimation Storyboard.TargetName="errorBorder" Storyboard.TargetProperty="Height" From="0" To="70" BeginTime="00:00:00" Duration="00:00:0.7" />
                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="errorBorder" BeginTime="00:00:00" Storyboard.TargetProperty="(UIElement.Visibility)">
                            <ObjectAnimationUsingKeyFrames.KeyFrames>
                                <DiscreteObjectKeyFrame KeyTime="00:00:00">
                                    <DiscreteObjectKeyFrame.Value>
                                        <Visibility>Visible</Visibility>
                                    </DiscreteObjectKeyFrame.Value>
                                </DiscreteObjectKeyFrame>
                            </ObjectAnimationUsingKeyFrames.KeyFrames>
                        </ObjectAnimationUsingKeyFrames>
                    </Storyboard>
                </VisualState>
                <VisualState x:Name="HideErrorMessage">
                    <Storyboard>
                        <DoubleAnimation Storyboard.TargetName="errorBorder" Storyboard.TargetProperty="Opacity" From="1" To="0" BeginTime="00:00:00" Duration="00:00:0.7" />
                        <DoubleAnimation Storyboard.TargetName="errorBorder" Storyboard.TargetProperty="Height" From="70" To="0" BeginTime="00:00:00" Duration="00:00:0.7" />
                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="errorBorder" BeginTime="00:00:0.7" Storyboard.TargetProperty="(UIElement.Visibility)">
                            <ObjectAnimationUsingKeyFrames.KeyFrames>
                                <DiscreteObjectKeyFrame KeyTime="00:00:00">
                                    <DiscreteObjectKeyFrame.Value>
                                        <Visibility>Collapsed</Visibility>
                                    </DiscreteObjectKeyFrame.Value>
                                </DiscreteObjectKeyFrame>
                            </ObjectAnimationUsingKeyFrames.KeyFrames>
                        </ObjectAnimationUsingKeyFrames>
                    </Storyboard>
                </VisualState>
            </VisualStateGroup>
        </VisualStateManager.VisualStateGroups>
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto" />
                <RowDefinition Height="*" />
            </Grid.RowDefinitions>
            <Border x:Name="errorBorder" Visibility="Collapsed">
                <Border BorderThickness="1" BorderBrush="Black" CornerRadius="5" Padding="14" Margin="3">
                    <TextBlock x:Name="errorText" />
                </Border>
            </Border>
            <dxlc:DockLayoutControl Grid.Row="1">
                <Border dxlc:DockLayoutControl.Dock="Right" dxlc:DockLayoutControl.AllowHorizontalSizing="True" Padding="6,8,12,12"
                        Width="300"  Background="{Binding Background, ElementName=pivotGrid}">
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="30" />
                            <RowDefinition Height="*" />
                        </Grid.RowDefinitions>
                        <Button x:Name="showConnectionButton" Content="New Connection" Grid.Row="1" Click="OnShowConnectionClick" Margin="0,0,0,7" IsEnabled="{Binding IsMainWaitIndicatorVisible, ElementName=pivotGrid, Converter={StaticResource inverseBoolConverter}}" />
                        <dxpg:PivotExcelFieldListControl Grid.Row="2"
                                             x:Name="fieldList"
                                             Owner="{Binding ElementName=pivotGrid}" HorizontalAlignment="Stretch" />
                    </Grid>
                </Border>
                <dxpg:PivotGridControl ShowFilterHeaders="False" ShowDataHeaders="False" ShowColumnHeaders="False" ShowRowHeaders="False"
                                       dxlc:DockLayoutControl.AllowHorizontalSizing="True" dxlc:DockLayoutControl.Dock="Client" Margin="0,0,6,0"
                                       CellDoubleClick="pivotGrid_CellDoubleClick" RowTreeWidth="202" SizeChanged="OnPivotGridSizeChanged"
                                    OlapException="OnPivotGridOlapException" FieldListSplitterY="200"
                                   Grid.RowSpan="2" x:Name="pivotGrid" VerticalAlignment="Stretch" ShowBorder="False" Loaded="OnPivotGridLoaded">
                </dxpg:PivotGridControl>
            </dxlc:DockLayoutControl>
        </Grid>
    </dxdb:DemoModuleControl>
</local:PivotGridDemoModule>!�)using System;
using System.Collections.Generic;
using System.IO;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media.Animation;
using System.Windows.Threading;
using DevExpress.DemoData.Helpers;
using DevExpress.Xpf.Core;
using DevExpress.Xpf.DemoBase.Helpers;
using DevExpress.Xpf.Editors;
using DevExpress.Xpf.Grid;
using DevExpress.Xpf.PivotGrid;

namespace PivotGridDemo.PivotGrid {
    public partial class OLAPBrowser : PivotGridDemoModule {

        const string YearFieldName = "[Date].[Calendar].[Calendar Year]";
        const string CategoryFieldName = "[Product].[Product].[Product]";
        const string TotalCostFieldName = "[Measures].[Total Product Cost]";
        const string FreightFieldName = "[Measures].[Freight Cost]";
        const string QuantityOrderFieldName = "[Measures].[Order Quantity]";
        protected const int DefaultFieldWidth = 90;
        double lastSplitterY = 200;

        static string GetSampleCubeFileName() {
            return "AdventureWorks.cub";
        }
        static string sampleFileName;
        readonly int DataSourceDialohHeight = 210;
        string SampleConnectionString {
            get { return "Provider=msolap;Data Source=" + SampleFileName + ";Initial Catalog=Adventure Works;Cube Name=Adventure Works"; }
        }
        protected static string SampleFileName {
            get {
                if(string.IsNullOrEmpty(sampleFileName)) {
                    sampleFileName = Path.GetFullPath(DataFilesHelper.FindFile(GetSampleCubeFileName(), DataFilesHelper.DataPath));
                    if(File.Exists(sampleFileName))
                        File.SetAttributes(sampleFileName, FileAttributes.Normal);
                }
                return sampleFileName;
            }
        }

        string PivotConnectionString() {
            return pivotGrid.OlapConnectionString;
        }
        bool IsSampleCube() {
            return pivotGrid.OlapConnectionString.Contains("Cube Name=Adventure Works");
        }
        static OLAPBrowser() {
            Type ownerType = typeof(OLAPBrowser);
        }

        public OLAPBrowser() {
            InitializeComponent();
        }

        void OnPivotGridLoaded(object sender, RoutedEventArgs e) {
            InitPivotGrid(SampleConnectionString);
        }

        void OnPivotGridSizeChanged(object sender, SizeChangedEventArgs e) {
            PivotGridControl pivot = sender as PivotGridControl;
            if(pivot == null || pivot.RenderSize.Height < 200 || lastSplitterY != pivot.FieldListSplitterY)
                return;
            pivot.FieldListSplitterY = Math.Round((pivot.RenderSize.Height - 90) * 0.5);
            lastSplitterY = pivot.FieldListSplitterY;
        }

        void InitPivotLayoutSampleOlapDB(AsyncOperationResult result) {
            if(pivotGrid.Fields.Count == 0 || !IsSampleCube()) return;
            pivotGrid.BeginUpdate();
            PivotGridField fieldProduct = pivotGrid.Fields[CategoryFieldName],
                fieldYear = pivotGrid.Fields[YearFieldName],
                fieldTotalCost = pivotGrid.Fields[TotalCostFieldName],
                fieldFreightCost = pivotGrid.Fields[FreightFieldName],
                fieldOrderQuantity = pivotGrid.Fields[QuantityOrderFieldName];
            if(fieldProduct == null ||
                fieldYear == null ||
                fieldTotalCost == null ||
                fieldFreightCost == null ||
                fieldOrderQuantity == null) {
                pivotGrid.EndUpdateAsync();
                return;
            }
            fieldProduct.Area = FieldArea.RowArea;
            fieldYear.Area = FieldArea.ColumnArea;
            fieldYear.SortOrder = FieldSortOrder.Descending;
            fieldTotalCost.Width = DefaultFieldWidth + 20;
            fieldTotalCost.CellFormat = "c2";
            fieldFreightCost.Width = DefaultFieldWidth;
            fieldFreightCost.CellFormat = "c2";
            fieldOrderQuantity.Width = DefaultFieldWidth + 5;
            fieldProduct.Visible = true;
            fieldYear.Visible = true;
            fieldTotalCost.Visible = true;
            fieldFreightCost.Visible = true;
            fieldOrderQuantity.Visible = true;
            pivotGrid.EndUpdateAsync();
        }

        void InitPivotGrid(string connectionString) {
            if(string.IsNullOrWhiteSpace(connectionString)) {
                pivotGrid.DataSource = null;
                return;
            }
            if(PivotConnectionString() == connectionString) return;
            pivotGrid.BeginUpdate();
            pivotGrid.Fields.Clear();
            pivotGrid.Groups.Clear();
            pivotGrid.OlapConnectionString = connectionString;
            pivotGrid.EndUpdateAsync(delegate(AsyncOperationResult result) {
                if(pivotGrid.Fields.Count == 0)
                    pivotGrid.RetrieveFieldsAsync(FieldArea.FilterArea, false, InitPivotLayoutSampleOlapDB);
            });
        }

        DataSourceDialog dialog;
        void OnShowConnectionClick(object sender, RoutedEventArgs e) {
            if(pivotGrid == null || pivotGrid.IsAsyncInProgress)
                return;
            errorBorder.Visibility = System.Windows.Visibility.Collapsed;
            dialog = new DataSourceDialog();
            dialog.Style = (Style)ResourceHelper.FindResource(this, "DataSourceDialogStyle");
            FloatingContainerParameters pars = new FloatingContainerParameters();
            pars.AllowSizing = false;
            pars.CloseOnEscape = true;
            pars.Title = "OLAP Connection";
            pars.ClosedDelegate = DialogClosed;
            FloatingContainer.ShowDialogContent(dialog, this, new Size(600, DataSourceDialohHeight), pars);
        }

        void DialogClosed(bool? close) {
            Application.Current.MainWindow.Activate();
            if(dialog == null)
                return;
            String connectionString = dialog.GetConnectionString();
            dialog = null;
            if(close != true)
                return;
            if(string.IsNullOrWhiteSpace(connectionString)) {
                return;
            }
            InitPivotGrid(connectionString);

        }

        private void pivotGrid_CellDoubleClick(object sender, PivotCellEventArgs e) {
            AsyncCompletedHandler showDrillDown = delegate(AsyncOperationResult result) {
                try {
                    if(result.Exception != null)
                        ShowMessageBox(result.Exception.Message);
                    else
                        ShowDrillDown((PivotDrillDownDataSource)result.Value);
                } catch(Exception ex) {
                    ShowMessageBox(ex.Message);
                }
            };
            pivotGrid.CreateDrillDownDataSourceAsync(e.ColumnIndex, e.RowIndex, showDrillDown);
        }

        void ShowDrillDown(PivotDrillDownDataSource drillDownDataSource) {
            if(drillDownDataSource.RowCount == 0) {
                ShowMessageBox("DrillDown operation returned no rows");
                return;
            }
            GridControl grid = new GridControl();
            grid.View = new TableView() { AllowPerPixelScrolling = true, ShowGroupPanel = false };
            grid.ItemsSource = drillDownDataSource;
            grid.AutoGeneratedColumns += grid_ColumnsPopulated;
            grid.PopulateColumns();
            grid.ShowBorder = false;
            FloatingWindowContainer.ShowDialogContent(grid, this, new Size(520, 300),
             new FloatingContainerParameters() {
                 AllowSizing = true,
                 CloseOnEscape = true,
                 Title = String.Format("Drill Down Results: {0} Rows", drillDownDataSource.RowCount),
                 ClosedDelegate = null,
             });
        }

        void ShowMessageBox(string message) {
            FloatingContainerParameters pars = new FloatingContainerParameters();
            pars.AllowSizing = false;
            pars.Title = "Error";
            TextBlock text = new TextBlock();
            text.Text = message;
            text.VerticalAlignment = System.Windows.VerticalAlignment.Center;
            text.HorizontalAlignment = System.Windows.HorizontalAlignment.Center;
            FloatingContainer.ShowDialogContent(text, this, new Size(420, 150), pars);
        }

        void grid_ColumnsPopulated(object sender, RoutedEventArgs e) {
            GridControl grid = (GridControl)sender;
            for(int i = 0; i < grid.Columns.Count; i++) {
                GridColumn column = grid.Columns[i];
                column.Header = GetHeaderText((string)column.FieldName);
            }
        }

        string GetHeaderText(string drilldownColumnName) {
            for(int i = 0; i < pivotGrid.Fields.Count; i++) {
                PivotGridField field = pivotGrid.Fields[i];
                string fieldDrillDownColumnName = !string.IsNullOrEmpty(PivotConnectionString()) ? field.OlapDrillDownColumnName : field.ExpressionFieldName;
                if(fieldDrillDownColumnName == drilldownColumnName)
                    return !string.IsNullOrEmpty(field.Caption) ? field.Caption : fieldDrillDownColumnName;
            }
            return drilldownColumnName;
        }

        void OnPivotGridOlapException(object sender, PivotOlapExceptionEventArgs e) {
            e.Handled = true;
            pivotGrid.Dispatcher.BeginInvoke(
                new Action(delegate() {
                ShowOLAPErrorMessage(e);
            })
               );
        }

        void ShowOLAPErrorMessage(PivotOlapExceptionEventArgs e) {
            errorText.Text = (e.Exception.Message + "\r\n " + ((e.Exception.InnerException != null) ? e.Exception.InnerException.Message : string.Empty));
            VisualStateManager.GoToState(this, "ShowErrorMessage", true);
            DispatcherTimer timer = new DispatcherTimer();
            timer.Interval = new TimeSpan(0, 0, 10);
            timer.Tick += OnTimerTick;
            timer.Start();
            e.Handled = true;
        }

        void OnTimerTick(object sender1, EventArgs e1) {
            DispatcherTimer self = sender1 as DispatcherTimer;
            if(self == null)
                return;
            self.Stop();
            self.Tick -= OnTimerTick;
            VisualStateManager.GoToState(this, "HideErrorMessage", true);
        }
    }
}!�MSBAML```����OKmscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0891&clr-namespace:System;assembly=mscorlibSystemI2clr-namespace:System.Collections;assembly=mscorlibSystem.CollectionsIEPivotGridDemo, Version=13.1.4.0, Culture=neutral, PublicKeyToken=nullA%clr-namespace:PivotGridDemo.PivotGridPivotGridDemo.PivotGrid%PivotGridDemo.PivotGrid.OLAPKPI\XPresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNWindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35WSPresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35D9http://schemas.microsoft.com/winfx/2006/xaml/presentationRNSystem.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:x,http://schemas.microsoft.com/winfx/2006/xaml6sys&clr-namespace:System;assembly=mscorlibJcollections2clr-namespace:System.Collections;assembly=mscorlib7local%clr-namespace:PivotGridDemo.PivotGridfbDevExpress.Xpf.PivotGrid.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aBdxpg7http://schemas.devexpress.com/winfx/2008/xaml/pivotgrida]DevExpress.Xpf.Core.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a?dxe5http://schemas.devexpress.com/winfx/2008/xaml/editors;dx2http://schemas.devexpress.com/winfx/2008/xaml/coreeaDevExpress.Xpf.DemoBase.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aAdxdb6http://schemas.devexpress.com/winfx/2008/xaml/demobase.�/)DevExpress.Xpf.DemoBase.DemoModuleControl'!System.Windows.VisualStateManagerVisualStateGroups%System.Windows.VisualStateGroup-ShowErrorMessageGroup��
States. System.Windows.VisualState-ShowErrorMessage��
Storyboard.��.��W���
TargetName$errorBorder����TargetProperty$
Opacity�W�From$0X�	W�To$1X�g�	BeginTime$00:00:00X�g�Duration$	00:00:0.7D�W�$errorBorder��$Height�$0X�$70X�$00:00:00X�$	00:00:0.7D�T�$errorBorder��$00:00:00X�$(UIElement.Visibility)�.�i�	R�KeyTime$	00:00:00��
R�Value
System.Windows.VisibilityVisible=�-HideErrorMessage��.��.��W�$errorBorder��$
Opacity�$1X�$0X�$00:00:00X�$	00:00:0.7D�W�$errorBorder��$Height�$70X�$0X�$00:00:00X�$	00:00:0.7D�T�$errorBorder��$	00:00:0.7X�$(UIElement.Visibility)�.�i�$	00:00:00��

	Collapsed=�OptionsContent����Orientation$Vertical=�.+�$DevExpress.Xpf.Core.GroupFrame$��Graphics��$
�0,0,0,8q�.��
�RowDefinitions
�$��*��$��*��ColumnDefinitions��$�*���$�*�.+���$��0�$�0�$�Center=�$
�0,0,4,4q�Status Graphics)#DevExpress.Xpf.Editors.ComboBoxEdit-$�cbStatusGraphics��$��0�$�1�$�Center=�$
�Stretch=�'!DevExpress.Xpf.Editors.ButtonEditIsTextEditable.$
�0,0,0,4q���$��1�$�0�$�Center=�Trend Graphics-$�cbTrendGraphics��$��1�$�1�$�Center=�$
�Stretch=�.Content.�
�$
��Auto��$��*�.+��-�Name$errorBorder��$y�	Collapsed=�._��$��1q�
�����CornerRadius$5���Padding$14q�$�3q�._���-��Name$	errorText��/	)DevExpress.Xpf.PivotGrid.PivotGridControl	-	Name$	pivotGrid��$��1�-
'PivotGridDemo.PivotGrid.FieldAreaHelper
FixAreas.	RowTreeWidth$	260�$
�Stretch=�	
ShowBorder.
	Fields-'DevExpress.Xpf.PivotGrid.PivotGridField-	Name$fieldFiscalYear��	FieldName$#[Date].[Fiscal].[Fiscal Year]��Area$
RowArea=�	AreaIndex$0�Caption$Fiscal Year��ExpandedInFieldsGroup.-
$fieldFiscalSemester��$'![Date].[Fiscal].[Fiscal Semester]��$
RowArea=�$1�$Fiscal Semester�� Width$	 100Q�-$fieldFiscalQuarter��$& [Date].[Fiscal].[Fiscal Quarter]��$
RowArea=�$2�$Fiscal Quarter��-$fieldInternetRevenue��$("[Measures].[Internet Sales Amount]��$DataArea=�$0�$Internet Revenue��-
$	fieldGoal��$("[Measures].[Internet Revenue Goal]��$DataArea=�$1�$
Goal��-$fieldStatus��$*$[Measures].[Internet Revenue Status]��$DataArea=�$2�$Status��-$
fieldTrend��$)#[Measures].[Internet Revenue Trend]��$DataArea=�$3�$Trend��!b<local:PivotGridDemoModule x:Class="PivotGridDemo.PivotGrid.OLAPKPI"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:sys="clr-namespace:System;assembly=mscorlib"
    xmlns:collections="clr-namespace:System.Collections;assembly=mscorlib"
    xmlns:local="clr-namespace:PivotGridDemo.PivotGrid"
    xmlns:dxpg="http://schemas.devexpress.com/winfx/2008/xaml/pivotgrid"
    xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
    xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
    xmlns:dxdb="http://schemas.devexpress.com/winfx/2008/xaml/demobase">

    <dxdb:DemoModuleControl>

        <VisualStateManager.VisualStateGroups>
            <VisualStateGroup x:Name="ShowErrorMessageGroup">
                <VisualState x:Name="ShowErrorMessage">
                    <Storyboard>
                        <DoubleAnimation Storyboard.TargetName="errorBorder" Storyboard.TargetProperty="Opacity" From="0" To="1" BeginTime="00:00:00" Duration="00:00:0.7" />
                        <DoubleAnimation Storyboard.TargetName="errorBorder" Storyboard.TargetProperty="Height" From="0" To="70" BeginTime="00:00:00" Duration="00:00:0.7" />
                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="errorBorder" BeginTime="00:00:00" Storyboard.TargetProperty="(UIElement.Visibility)">
                            <ObjectAnimationUsingKeyFrames.KeyFrames>
                                <DiscreteObjectKeyFrame KeyTime="00:00:00">
                                    <DiscreteObjectKeyFrame.Value>
                                        <Visibility>Visible</Visibility>
                                    </DiscreteObjectKeyFrame.Value>
                                </DiscreteObjectKeyFrame>
                            </ObjectAnimationUsingKeyFrames.KeyFrames>
                        </ObjectAnimationUsingKeyFrames>
                    </Storyboard>
                </VisualState>
                <VisualState x:Name="HideErrorMessage">
                    <Storyboard>
                        <DoubleAnimation Storyboard.TargetName="errorBorder" Storyboard.TargetProperty="Opacity" From="1" To="0" BeginTime="00:00:00" Duration="00:00:0.7" />
                        <DoubleAnimation Storyboard.TargetName="errorBorder" Storyboard.TargetProperty="Height" From="70" To="0" BeginTime="00:00:00" Duration="00:00:0.7" />
                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="errorBorder" BeginTime="00:00:0.7" Storyboard.TargetProperty="(UIElement.Visibility)">
                            <ObjectAnimationUsingKeyFrames.KeyFrames>
                                <DiscreteObjectKeyFrame KeyTime="00:00:00">
                                    <DiscreteObjectKeyFrame.Value>
                                        <Visibility>Collapsed</Visibility>
                                    </DiscreteObjectKeyFrame.Value>
                                </DiscreteObjectKeyFrame>
                            </ObjectAnimationUsingKeyFrames.KeyFrames>
                        </ObjectAnimationUsingKeyFrames>
                    </Storyboard>
                </VisualState>
            </VisualStateGroup>
        </VisualStateManager.VisualStateGroups>

        <dxdb:DemoModuleControl.OptionsContent>
            <StackPanel Orientation="Vertical">
                <dx:GroupFrame Header="Graphics" Margin="0,0,0,8">
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="*" />
                            <RowDefinition Height="*" />
                        </Grid.RowDefinitions>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="*" />
                            <ColumnDefinition Width="*" />
                        </Grid.ColumnDefinitions>
                        <TextBlock Grid.Row="0" Grid.Column="0" VerticalAlignment="Center" Margin="0,0,4,4">Status Graphics</TextBlock>
                        <dxe:ComboBoxEdit Grid.Row="0" Grid.Column="1" Name="cbStatusGraphics" VerticalAlignment="Center" HorizontalAlignment="Stretch"
                                  IsTextEditable="False" Margin="0,0,0,4" SelectedIndexChanged="cbStatusGraphics_SelectedIndexChanged" />
                        <TextBlock Grid.Row="1" Grid.Column="0" VerticalAlignment="Center">Trend Graphics</TextBlock>
                        <dxe:ComboBoxEdit Grid.Row="1" Grid.Column="1" Name="cbTrendGraphics" VerticalAlignment="Center" HorizontalAlignment="Stretch"
                                  IsTextEditable="False" SelectedIndexChanged="cbTrendGraphics_SelectedIndexChanged"/>
                    </Grid>
                </dx:GroupFrame>
            </StackPanel>
        </dxdb:DemoModuleControl.OptionsContent>

        <Grid>

            <Grid.RowDefinitions>
                <RowDefinition Height="Auto" />
                <RowDefinition Height="*" />
            </Grid.RowDefinitions>

            <Border x:Name="errorBorder" Visibility="Collapsed">
            <Border BorderThickness="1" BorderBrush="Black" CornerRadius="5" Padding="14" Margin="3">
                <TextBlock x:Name="errorText" />
            </Border>
        </Border>

        <dxpg:PivotGridControl Grid.Row="1" x:Name="pivotGrid" local:FieldAreaHelper.FixAreas="True"  OlapException="OnPivotGridOlapException"
                               RowTreeWidth="260" VerticalAlignment="Stretch" ShowBorder="False">
            <dxpg:PivotGridControl.Fields>
                <dxpg:PivotGridField x:Name="fieldFiscalYear" FieldName="[Date].[Fiscal].[Fiscal Year]" Area="RowArea" AreaIndex="0" Caption="Fiscal Year" ExpandedInFieldsGroup="False"/>
                <dxpg:PivotGridField x:Name="fieldFiscalSemester" FieldName="[Date].[Fiscal].[Fiscal Semester]" Area="RowArea" AreaIndex="1" Caption="Fiscal Semester" Width="100" />
                <dxpg:PivotGridField x:Name="fieldFiscalQuarter" FieldName="[Date].[Fiscal].[Fiscal Quarter]" Area="RowArea" AreaIndex="2" Caption="Fiscal Quarter" />
                <dxpg:PivotGridField x:Name="fieldInternetRevenue" FieldName="[Measures].[Internet Sales Amount]" Area="DataArea" AreaIndex="0" Caption="Internet Revenue" />
                <dxpg:PivotGridField x:Name="fieldGoal" FieldName="[Measures].[Internet Revenue Goal]" Area="DataArea" AreaIndex="1" Caption="Goal" />
                <dxpg:PivotGridField x:Name="fieldStatus" FieldName="[Measures].[Internet Revenue Status]" Area="DataArea" AreaIndex="2" Caption="Status" />
                <dxpg:PivotGridField x:Name="fieldTrend" FieldName="[Measures].[Internet Revenue Trend]" Area="DataArea" AreaIndex="3" Caption="Trend" />
            </dxpg:PivotGridControl.Fields>
        </dxpg:PivotGridControl>

        </Grid>
    </dxdb:DemoModuleControl>
</local:PivotGridDemoModule>!
using System;
using System.IO;
using System.Windows;
using System.Windows.Data;
using System.Windows.Markup;
using DevExpress.DemoData.Helpers;
using DevExpress.Xpf.Core;
using DevExpress.Xpf.DemoBase;
using DevExpress.Xpf.DemoBase.Helpers;
using DevExpress.Xpf.Editors;
using DevExpress.Xpf.PivotGrid;
using System.Windows.Threading;

namespace PivotGridDemo.PivotGrid {
    public partial class OLAPKPI : PivotGridDemoModule {

        public OLAPKPI() {
            InitializeComponent();

            cbStatusGraphics.ItemsSource = Enum.GetValues(typeof(PivotKpiGraphic));
            cbStatusGraphics.SelectedIndex = 1;
            cbTrendGraphics.ItemsSource = Enum.GetValues(typeof(PivotKpiGraphic));
            cbTrendGraphics.SelectedIndex = 1;

            InitPivotGrid();
        }

        private void InitPivotGrid() {
            pivotGrid.OlapConnectionString = SampleConnectionString;
        }
        static string sampleFileName;

        string SampleConnectionString {
            get { return "Provider=msolap;Data Source=" + SampleFileName + ";Initial Catalog=Adventure Works;Cube Name=Adventure Works"; }
        }
        protected static string SampleFileName {
            get {
                if(string.IsNullOrEmpty(sampleFileName)) {
                    sampleFileName = Path.GetFullPath(DataFilesHelper.FindFile(GetSampleCubeFileName(), DataFilesHelper.DataPath));
                    if(File.Exists(sampleFileName))
                        File.SetAttributes(sampleFileName, FileAttributes.Normal);
                }
                return sampleFileName;
            }
        }

        static string GetSampleCubeFileName() {
            return "AdventureWorks.cub";
        }

        private void cbStatusGraphics_SelectedIndexChanged(object sender, RoutedEventArgs e) {
            fieldStatus.KpiGraphic = (PivotKpiGraphic)(((ComboBoxEdit)sender).SelectedItem);
        }

        private void cbTrendGraphics_SelectedIndexChanged(object sender, RoutedEventArgs e) {
            fieldTrend.KpiGraphic = (PivotKpiGraphic)(((ComboBoxEdit)sender).SelectedItem);
        }

        void OnPivotGridOlapException(object sender, PivotOlapExceptionEventArgs e) {
            e.Handled = true;
            pivotGrid.Dispatcher.BeginInvoke(
                new Action(delegate() {
                ShowOLAPErrorMessage(e);
            })
               );
        }

        void ShowOLAPErrorMessage(PivotOlapExceptionEventArgs e) {
            errorText.Text = (e.Exception.Message + "\r\n " + ((e.Exception.InnerException != null) ? e.Exception.InnerException.Message : string.Empty));
            VisualStateManager.GoToState(this, "ShowErrorMessage", true);
            DispatcherTimer timer = new DispatcherTimer();
            timer.Interval = new TimeSpan(0, 0, 10);
            timer.Tick += OnTimerTick;
            timer.Start();
            e.Handled = true;
        }

        void OnTimerTick(object sender1, EventArgs e1) {
            DispatcherTimer self = sender1 as DispatcherTimer;
            if(self == null)
                return;
            self.Stop();
            self.Tick -= OnTimerTick;
            VisualStateManager.GoToState(this, "HideErrorMessage", true);
        }
    }
}!�
MSBAML```����OKmscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0891&clr-namespace:System;assembly=mscorlibSystemI2clr-namespace:System.Collections;assembly=mscorlibSystem.CollectionsIEPivotGridDemo, Version=13.1.4.0, Culture=neutral, PublicKeyToken=nullA%clr-namespace:PivotGridDemo.PivotGridPivotGridDemo.PivotGrid*$PivotGridDemo.PivotGrid.OrderReports\XPresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNWindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35WSPresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35D9http://schemas.microsoft.com/winfx/2006/xaml/presentationRNSystem.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:x,http://schemas.microsoft.com/winfx/2006/xaml6sys&clr-namespace:System;assembly=mscorlibJcollections2clr-namespace:System.Collections;assembly=mscorlib7local%clr-namespace:PivotGridDemo.PivotGridfbDevExpress.Xpf.PivotGrid.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aBdxpg7http://schemas.devexpress.com/winfx/2008/xaml/pivotgrida]DevExpress.Xpf.Core.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a?dxe5http://schemas.devexpress.com/winfx/2008/xaml/editorseaDevExpress.Xpf.DemoBase.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aAdxdb6http://schemas.devexpress.com/winfx/2008/xaml/demobase;dx2http://schemas.devexpress.com/winfx/2008/xaml/core.�/)DevExpress.Xpf.DemoBase.DemoModuleControlOptionsContent����Orientation$Vertical=�.+�$DevExpress.Xpf.Core.GroupFrame$��
Order Reports��.�("DevExpress.Xpf.Editors.ListBoxEdit-Name$reportsList��%DevExpress.Xpf.Editors.BaseEdit
ShowBorder.
SelectedIndex$0��Z�
StyleSettings:4DevExpress.Xpf.Editors.RadioListBoxEditStyleSettingsItems��
Orders����Orders (filtering)����Quantity����Average Unit Price��-$�groupOptions��$
��Options��$y�	Collapsed=�.�)#DevExpress.Xpf.Editors.ComboBoxEdit-$�
orderIDFilter��'!DevExpress.Xpf.Editors.ButtonEditIsTextEditable.Content./)DevExpress.Xpf.PivotGrid.PivotGridControl-	Name$		pivotGrid��-	'PivotGridDemo.PivotGrid.FieldAreaHelper
	FixAreas
.RowTreeWidth$	243�
ShowBorder.

Fields
-
'DevExpress.Xpf.PivotGrid.PivotGridField
-
Name$
fieldOrder��
	FieldName$
OrderID��
Area$
RowArea=�
AllowFilter$FalseY�
	AreaIndex$0�
Width$	150Q�
Caption$
OrderID��
-$fieldProductName��$ProductName��$
RowArea=�$FalseY�$1�$	150Q�$Product Name��
-$fieldUnitPrice��$	UnitPrice��$DataArea=�$	150Q�$FalseY�$0�$
Unit Price��

CellFormat$c��
SummaryType$
Average=�
-$
fieldQuantity��$Quantity��$DataArea=�$	120Q�$FalseY�$1�$Quantity��
-	$
fieldDiscount��$Discount��$DataArea=�$	120Q�$FalseY�$2�$Discount��
TotalCellFormat$P��$
Average=�
-
$fieldExtendedPrice��$Extended Price��$DataArea=�$	150Q�$FalseY�$3�$Extended Price��$c��!Q<local:PivotGridDemoModule x:Class="PivotGridDemo.PivotGrid.OrderReports"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:sys="clr-namespace:System;assembly=mscorlib"
    xmlns:collections="clr-namespace:System.Collections;assembly=mscorlib"
    xmlns:local="clr-namespace:PivotGridDemo.PivotGrid"
    xmlns:dxpg="http://schemas.devexpress.com/winfx/2008/xaml/pivotgrid"
    xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
    xmlns:dxdb="http://schemas.devexpress.com/winfx/2008/xaml/demobase"
    xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core">

    <dxdb:DemoModuleControl>
        <dxdb:DemoModuleControl.OptionsContent>
            <StackPanel Orientation="Vertical">
                <dx:GroupFrame Header="Order Reports">
                    <dxe:ListBoxEdit x:Name="reportsList" ShowBorder="False" SelectedIndex="0" Background="{x:Null}" SelectedIndexChanged="ListBoxEdit_SelectionChanged">
                        <dxe:ListBoxEdit.StyleSettings>
                            <dxe:RadioListBoxEditStyleSettings />
                        </dxe:ListBoxEdit.StyleSettings>
                        <dxe:ListBoxEdit.Items>
                            <sys:String>Orders</sys:String>
                            <sys:String>Orders (filtering)</sys:String>
                            <sys:String>Quantity</sys:String>
                            <sys:String>Average Unit Price</sys:String>
                        </dxe:ListBoxEdit.Items>
                    </dxe:ListBoxEdit>
                </dx:GroupFrame>
                <dx:GroupFrame Header="Options" Name="groupOptions" Visibility="Collapsed">
                    <dxe:ComboBoxEdit Name="orderIDFilter" SelectedIndexChanged="orderIDFilter_SelectedIndexChanged" IsTextEditable="False"></dxe:ComboBoxEdit>
                </dx:GroupFrame>
            </StackPanel>
        </dxdb:DemoModuleControl.OptionsContent>

        <dxpg:PivotGridControl x:Name="pivotGrid" local:FieldAreaHelper.FixAreas="True"
            RowTreeWidth="243" ShowBorder="False">
            <dxpg:PivotGridControl.Fields>
                <dxpg:PivotGridField x:Name="fieldOrder" FieldName="OrderID" Area="RowArea" AllowFilter="False"
                                AreaIndex="0" Width="150" Caption="OrderID" />
                <dxpg:PivotGridField x:Name="fieldProductName" FieldName="ProductName" Area="RowArea" AllowFilter="False"
                                AreaIndex="1" Width="150" Caption="Product Name" />
                <dxpg:PivotGridField x:Name="fieldUnitPrice" FieldName="UnitPrice" Area="DataArea" Width="150" AllowFilter="False"
                                AreaIndex="0" Caption="Unit Price" CellFormat="c" SummaryType="Average" />
                <dxpg:PivotGridField x:Name="fieldQuantity" FieldName="Quantity" Area="DataArea" Width="120" AllowFilter="False"
                                AreaIndex="1" Caption="Quantity" />
                <dxpg:PivotGridField x:Name="fieldDiscount" FieldName="Discount" Area="DataArea" Width="120" AllowFilter="False"
                                AreaIndex="2" Caption="Discount" TotalCellFormat="P" SummaryType="Average" />
                <dxpg:PivotGridField x:Name="fieldExtendedPrice" FieldName="Extended Price" Area="DataArea" Width="150" AllowFilter="False"
                                AreaIndex="3" Caption="Extended Price" CellFormat="c" />
            </dxpg:PivotGridControl.Fields>
        </dxpg:PivotGridControl>
    </dxdb:DemoModuleControl>
</local:PivotGridDemoModule>!"
using System.Windows;
using DevExpress.Xpf.DemoBase;
using DevExpress.Xpf.PivotGrid;
using DevExpress.Xpf.Core;

namespace PivotGridDemo.PivotGrid {
    public partial class OrderReports : PivotGridDemoModule {

        public OrderReports() {
            InitializeComponent();
            pivotGrid.DataSource = NWindData.OrderReports;
        }
        private void ListBoxEdit_SelectionChanged(object sender, RoutedEventArgs e) {
            if(!IsLoaded) return;
            pivotGrid.BeginUpdate();
            groupOptions.Visibility = System.Windows.Visibility.Collapsed;
            fieldOrder.FilterValues.Clear();
            fieldOrder.FilterValues.FilterType = FieldFilterType.Excluded;
            fieldOrder.Area = FieldArea.RowArea;
            fieldUnitPrice.Area = FieldArea.DataArea;
            fieldDiscount.Area = FieldArea.DataArea;
            fieldExtendedPrice.Area = FieldArea.DataArea;
            fieldQuantity.Area = FieldArea.DataArea;

            switch(reportsList.SelectedIndex) {
                case 0:

                    break;
                case 1:
                    fieldOrder.AreaIndex = 0;
                    groupOptions.Visibility = System.Windows.Visibility.Visible;
                    if(orderIDFilter.Items.Count == 0) {
                        orderIDFilter.Items.AddRange(fieldOrder.GetUniqueValues());
                        orderIDFilter.SelectedIndex = 0;
                    }
                    SetFilter();
                    break;
                case 2:
                    fieldOrder.Area = FieldArea.FilterArea;
                    fieldUnitPrice.Area = FieldArea.FilterArea;
                    fieldDiscount.Area = FieldArea.FilterArea;
                    fieldExtendedPrice.Area = FieldArea.FilterArea;
                    break;
                case 3:
                    fieldOrder.Area = FieldArea.FilterArea;
                    fieldQuantity.Area = FieldArea.FilterArea;
                    fieldDiscount.Area = FieldArea.FilterArea;
                    fieldExtendedPrice.Area = FieldArea.FilterArea;
                    break;
            }
            pivotGrid.EndUpdate();
        }

        private void orderIDFilter_SelectedIndexChanged(object sender, RoutedEventArgs e) {
            SetFilter();
        }

        void SetFilter() {
            fieldOrder.FilterValues.FilterType = FieldFilterType.Included;
            fieldOrder.FilterValues.Clear();
            fieldOrder.FilterValues.Add(orderIDFilter.SelectedItem);
        }
    }
}!�
MSBAML```����IEPivotGridDemo, Version=13.1.4.0, Culture=neutral, PublicKeyToken=nullA%clr-namespace:PivotGridDemo.PivotGridPivotGridDemo.PivotGrid'!PivotGridDemo.PivotGrid.Prefilter\XPresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNWindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35WSPresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35D9http://schemas.microsoft.com/winfx/2006/xaml/presentationRNSystem.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:x,http://schemas.microsoft.com/winfx/2006/xaml7local%clr-namespace:PivotGridDemo.PivotGridfbDevExpress.Xpf.PivotGrid.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aBdxpg7http://schemas.devexpress.com/winfx/2008/xaml/pivotgrida]DevExpress.Xpf.Core.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a?dxe5http://schemas.devexpress.com/winfx/2008/xaml/editors;dx2http://schemas.devexpress.com/winfx/2008/xaml/coreeaDevExpress.Xpf.DemoBase.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aAdxdb6http://schemas.devexpress.com/winfx/2008/xaml/demobase1+PivotGridDemo.PivotGrid.PivotGridDemoModule
Loaded$ PivotGridDemoModule_Loaded��$	�300��$	�400��.�/)DevExpress.Xpf.DemoBase.DemoModuleControlOptionsContent����Orientation$Vertical=�$	�200��.+�$DevExpress.Xpf.Core.GroupFrame$��
Date interval��$
�0,0,0,8q�.���RowDefinitions���ColumnDefinitions��$
�Auto���.+���$�Center=�from:%DevExpress.Xpf.Editors.DateEdit-$�
deFromDate��
���$�1�$�Center=�$
�Stretch=�$
�4,0,0,4q���$��1�$�Center=�to:-$�deToDate��
���$��1�$�1�$�Center=�$
�Stretch=�$
�4,4,0,0q�Content./)DevExpress.Xpf.PivotGrid.PivotGridControl-Name$	pivotGrid��-'PivotGridDemo.PivotGrid.FieldAreaHelperFixAreas.$
�Stretch=�
ShowBorder.	RowTreeWidth$		202�
Fields
-'DevExpress.Xpf.PivotGrid.PivotGridField-Name$
fieldQuantity��	FieldName$Quantity��
Area$
DataArea=�	AreaIndex$0�Caption$Quantity��-$fieldOrderDate��$	OrderDate��$

ColumnArea=�$0�UnboundFieldName$fieldOrderDate��$
Order Date��ValueFormat$d��Width$75Q�-$fieldProductName��$ProductName��$

RowArea=�$0�$Product Name��!]<local:PivotGridDemoModule x:Class="PivotGridDemo.PivotGrid.Prefilter"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:PivotGridDemo.PivotGrid"
    xmlns:dxpg="http://schemas.devexpress.com/winfx/2008/xaml/pivotgrid"
    xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
    xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
    xmlns:dxdb="http://schemas.devexpress.com/winfx/2008/xaml/demobase"
    Height="300" Width="400" Loaded="PivotGridDemoModule_Loaded">
    <dxdb:DemoModuleControl>
        <dxdb:DemoModuleControl.OptionsContent>
            <StackPanel Orientation="Vertical" MinWidth="200">
                <dx:GroupFrame Header="Date interval" Margin="0,0,0,8">
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition />
                            <RowDefinition />
                        </Grid.RowDefinitions>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto" />
                            <ColumnDefinition />
                        </Grid.ColumnDefinitions>
                        <TextBlock VerticalAlignment="Center">from:</TextBlock>
                        <dxe:DateEdit Foreground="Black" Grid.Column="1" Name="deFromDate" VerticalAlignment="Center"
                                  HorizontalAlignment="Stretch" Margin="4,0,0,4" />
                        <TextBlock Grid.Row="1" VerticalAlignment="Center">to:</TextBlock>
                        <dxe:DateEdit Foreground="Black" Grid.Row="1" Grid.Column="1" Name="deToDate" VerticalAlignment="Center"
                                  HorizontalAlignment="Stretch" Margin="4,4,0,0" />
                    </Grid>
                </dx:GroupFrame>
            </StackPanel>
        </dxdb:DemoModuleControl.OptionsContent>
        <dxpg:PivotGridControl x:Name="pivotGrid" local:FieldAreaHelper.FixAreas="True" VerticalAlignment="Stretch" ShowBorder="False" RowTreeWidth="202">
            <dxpg:PivotGridControl.Fields>
                <dxpg:PivotGridField x:Name="fieldQuantity" FieldName="Quantity" Area="DataArea" AreaIndex="0"
                                 Caption="Quantity" />
                <dxpg:PivotGridField x:Name="fieldOrderDate" FieldName="OrderDate" Area="ColumnArea" AreaIndex="0"
                                 UnboundFieldName="fieldOrderDate" Caption="Order Date" ValueFormat="d" Width="75" />
                <dxpg:PivotGridField x:Name="fieldProductName" FieldName="ProductName" Area="RowArea" AreaIndex="0"
                                 Caption="Product Name" />
            </dxpg:PivotGridControl.Fields>
        </dxpg:PivotGridControl>
    </dxdb:DemoModuleControl>
</local:PivotGridDemoModule>!�using System;
using System.Windows;
using System.Globalization;
using DevExpress.Data.Filtering;
using DevExpress.Xpf.DemoBase;
using DevExpress.Xpf.PivotGrid;
using DevExpress.Xpf.Editors;

namespace PivotGridDemo.PivotGrid {
    public partial class Prefilter : PivotGridDemoModule {
        public Prefilter() {
            InitializeComponent();
            pivotGrid.DataSource = NWindData.SalesPerson;
            deFromDate.EditValue = new System.DateTime(1994, 8, 4, 11, 25, 54, 0);
            deToDate.EditValue = new System.DateTime(1996, 6, 5, 11, 26, 19, 0);
        }
        void PivotGridDemoModule_Loaded(object sender, RoutedEventArgs e) {
            deFromDate.EditValueChanged += deFromTo_EditValueChanged;
            deToDate.EditValueChanged += deFromTo_EditValueChanged;
        }
        void deFromTo_EditValueChanged(object sender, EditValueChangedEventArgs e) {
            ApplyPrefilter();
        }
        void ApplyPrefilter() {
            string str1 = GetCriteria(deFromDate.DateTime, true),
                str2 = GetCriteria(deToDate.DateTime, false);
            if(!string.IsNullOrEmpty(str1) && !string.IsNullOrEmpty(str2))
                pivotGrid.PrefilterCriteria = CriteriaOperator.Parse(str1 + " And " + str2);
            else
                pivotGrid.PrefilterCriteria = CriteriaOperator.Parse(str1 + str2);
        }
        string GetCriteria(DateTime date, bool isGreater) {
            if(date.Ticks == 0) return "";
            return string.Format("{0} {1} #{2}#", fieldOrderDate.Name, isGreater ? ">=" : "<=",
                Convert.ToString(date, CultureInfo.InvariantCulture));
        }
    }
}!�MSBAML```����OKmscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0891&clr-namespace:System;assembly=mscorlibSystemI2clr-namespace:System.Collections;assembly=mscorlibSystem.CollectionsIEPivotGridDemo, Version=13.1.4.0, Culture=neutral, PublicKeyToken=nullA%clr-namespace:PivotGridDemo.PivotGridPivotGridDemo.PivotGridfbDevExpress.Xpf.PivotGrid.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a}Wclr-namespace:DevExpress.Xpf.PivotGrid.Printing;assembly=DevExpress.Xpf.PivotGrid.v13.1!DevExpress.Xpf.PivotGrid.Printing*$PivotGridDemo.PivotGrid.PrintOptions\XPresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNWindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35WSPresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35D9http://schemas.microsoft.com/winfx/2006/xaml/presentationRNSystem.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:x,http://schemas.microsoft.com/winfx/2006/xaml6sys&clr-namespace:System;assembly=mscorlibJcollections2clr-namespace:System.Collections;assembly=mscorlib7local%clr-namespace:PivotGridDemo.PivotGridBdxpg7http://schemas.devexpress.com/winfx/2008/xaml/pivotgridcdxpgpWclr-namespace:DevExpress.Xpf.PivotGrid.Printing;assembly=DevExpress.Xpf.PivotGrid.v13.1a]DevExpress.Xpf.Core.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a?dxe5http://schemas.devexpress.com/winfx/2008/xaml/editorseaDevExpress.Xpf.DemoBase.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aAdxdb6http://schemas.devexpress.com/winfx/2008/xaml/demobase;dx2http://schemas.devexpress.com/winfx/2008/xaml/core.�/)DevExpress.Xpf.DemoBase.DemoModuleControlOptionsContent����Orientation$Vertical=�.+�$DevExpress.Xpf.Core.GroupFrame$��
Print Options��$�0,0,0,12q�.���$Vertical=�.+�& DevExpress.Xpf.Editors.CheckEditContent)#DevExpress.Xpf.Core.ObjectConverter$Print Column Headers$
�0,0,6,4q�	IsChecked��Path$PrintColumnHeaders��ElementName$	pivotGrid���Mode$TwoWay=�$Print Row Headers$
�0,0,6,4q��$PrintRowHeaders�$	pivotGrid��$TwoWay=�$Print Filter Headers$
�0,0,6,4q��$PrintFilterHeaders�$	pivotGrid��$TwoWay=�$Print Data Headers$
�0,0,6,4q��$PrintDataHeaders�$	pivotGrid��$TwoWay=�$!Print Headers On Every Page$
�0,0,6,4q��$PrintHeadersOnEveryPage�$	pivotGrid��$TwoWay=�$ Print Unused Filter Fields$
�0,0,6,4q��$PrintUnusedFilterFields�$	pivotGrid��$TwoWay=�$Merge Column Field Values$
�0,0,6,4q��$MergeColumnFieldValues�$	pivotGrid��$TwoWay=�$Merge Row Field Values$
�0,0,6,4q��$MergeRowFieldValues�$	pivotGrid��$TwoWay=�$Print Horizontal Lines$
�0,0,6,4q��$PrintHorzLines�$	pivotGrid��$TwoWay=�$Print Vertical Lines$
�0,0,6,4q��$PrintVertLines�$	pivotGrid��$TwoWay=�$Insert Page Breaks$
�0,0,6,4q��$PrintInsertPageBreaks�$	pivotGrid��$TwoWay=���$
Horizontal=�.+���$��Print Mode:��$
�0,2,0,4q�)#DevExpress.Xpf.Editors.ComboBoxEdit$	�140��'!DevExpress.Xpf.Editors.ButtonEditIsTextEditable.$
�6,0,6,4q�+%DevExpress.Xpf.Editors.LookUpEditBaseSelectedItem�$PrintLayoutMode�$	pivotGrid��$TwoWay=�	Items	71DevExpress.Xpf.PivotGrid.Printing.PrintLayoutModeAuto=�SinglePageLayout=�MultiplePagesLayout=��-$�
Print Preview��$�22��
Content.
/	)DevExpress.Xpf.PivotGrid.PivotGridControl	-	Name$	pivotGrid��-
'PivotGridDemo.PivotGrid.FieldAreaHelper
FixAreas.
	RowTreeWidth$	
225�	
ShowBorder.
	Fields-'DevExpress.Xpf.PivotGrid.PivotGridField-Name$
fieldCategory��	FieldName$CategoryName��Area$
RowArea=�Width$	100Q�Caption$
Category Name��-$fieldProduct��$ProductName��$
RowArea=�$	200Q�$Product Name��-$	fieldYear��$	OrderDate��$
ColumnArea=�
GroupInterval$DateYear=�$
Year��$80Q�-$fieldQuarter��$	OrderDate��$
ColumnArea=�$DateQuarter=�$
Quarter��$80Q�ValueFormat$Quarter {0}��-$
fieldQuantity��$Quantity��$DataArea=�$	100Q�$Quantity��
CellFormat$f2��-$fieldExtendedPrice��$Extended Price��$DataArea=�$	100Q�$Extended Price��!�<local:PivotGridDemoModule x:Class="PivotGridDemo.PivotGrid.PrintOptions"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:sys="clr-namespace:System;assembly=mscorlib"
    xmlns:collections="clr-namespace:System.Collections;assembly=mscorlib"
    xmlns:local="clr-namespace:PivotGridDemo.PivotGrid"
    xmlns:dxpg="http://schemas.devexpress.com/winfx/2008/xaml/pivotgrid"
    xmlns:dxpgp="clr-namespace:DevExpress.Xpf.PivotGrid.Printing;assembly=DevExpress.Xpf.PivotGrid.v13.1"
    xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
    xmlns:dxdb="http://schemas.devexpress.com/winfx/2008/xaml/demobase"
    xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core">

    <dxdb:DemoModuleControl>
        <dxdb:DemoModuleControl.OptionsContent>
            <StackPanel Orientation="Vertical">
                <dx:GroupFrame Header="Print Options" Margin="0,0,0,12">
                    <StackPanel Orientation="Vertical">
                        <dxe:CheckEdit IsChecked="{Binding Path=PrintColumnHeaders, ElementName=pivotGrid, Mode=TwoWay}" Content="Print Column Headers" Margin="0,0,6,4" />
                        <dxe:CheckEdit IsChecked="{Binding Path=PrintRowHeaders, ElementName=pivotGrid, Mode=TwoWay}" Content="Print Row Headers" Margin="0,0,6,4" />
                        <dxe:CheckEdit IsChecked="{Binding Path=PrintFilterHeaders, ElementName=pivotGrid, Mode=TwoWay}" Content="Print Filter Headers" Margin="0,0,6,4" />
                        <dxe:CheckEdit IsChecked="{Binding Path=PrintDataHeaders, ElementName=pivotGrid, Mode=TwoWay}" Content="Print Data Headers" Margin="0,0,6,4" />
                        <dxe:CheckEdit IsChecked="{Binding Path=PrintHeadersOnEveryPage, ElementName=pivotGrid, Mode=TwoWay}" Content="Print Headers On Every Page" Margin="0,0,6,4" />
                        <dxe:CheckEdit IsChecked="{Binding Path=PrintUnusedFilterFields, ElementName=pivotGrid, Mode=TwoWay}" Content="Print Unused Filter Fields" Margin="0,0,6,4" />
                        <dxe:CheckEdit IsChecked="{Binding Path=MergeColumnFieldValues, ElementName=pivotGrid, Mode=TwoWay}" Content="Merge Column Field Values" Margin="0,0,6,4" />
                        <dxe:CheckEdit IsChecked="{Binding Path=MergeRowFieldValues, ElementName=pivotGrid, Mode=TwoWay}" Content="Merge Row Field Values" Margin="0,0,6,4" />
                        <dxe:CheckEdit IsChecked="{Binding Path=PrintHorzLines, ElementName=pivotGrid, Mode=TwoWay}" Content="Print Horizontal Lines" Margin="0,0,6,4" />
                        <dxe:CheckEdit IsChecked="{Binding Path=PrintVertLines, ElementName=pivotGrid, Mode=TwoWay}" Content="Print Vertical Lines" Margin="0,0,6,4" />
                        <dxe:CheckEdit IsChecked="{Binding Path=PrintInsertPageBreaks, ElementName=pivotGrid, Mode=TwoWay}" Content="Insert Page Breaks" Margin="0,0,6,4" />
                        <StackPanel Orientation="Horizontal">
                            <TextBlock Text="Print Mode:" Margin="0,2,0,4" />
                            <dxe:ComboBoxEdit Width="140" IsTextEditable="False" SelectedItem="{Binding Path=PrintLayoutMode, ElementName=pivotGrid, Mode=TwoWay}" Margin="6,0,6,4">
                                <dxe:ComboBoxEdit.Items>
                                    <dxpgp:PrintLayoutMode>Auto</dxpgp:PrintLayoutMode>
                                    <dxpgp:PrintLayoutMode>SinglePageLayout</dxpgp:PrintLayoutMode>
                                    <dxpgp:PrintLayoutMode>MultiplePagesLayout</dxpgp:PrintLayoutMode>
                                </dxe:ComboBoxEdit.Items>
                            </dxe:ComboBoxEdit>
                        </StackPanel>
                    </StackPanel>
                </dx:GroupFrame>
                <Button Content="Print Preview" Click="Button_Click" Height="22" />
            </StackPanel>
        </dxdb:DemoModuleControl.OptionsContent>

        <dxpg:PivotGridControl x:Name="pivotGrid" local:FieldAreaHelper.FixAreas="True"
                               RowTreeWidth="225" ShowBorder="False">
            <dxpg:PivotGridControl.Fields>
                <dxpg:PivotGridField x:Name="fieldCategory" FieldName="CategoryName" Area="RowArea" Width="100" Caption="Category Name" />
                <dxpg:PivotGridField x:Name="fieldProduct" FieldName="ProductName" Area="RowArea" Width="200" Caption="Product Name" />
                <dxpg:PivotGridField x:Name="fieldYear" FieldName="OrderDate" Area="ColumnArea" GroupInterval="DateYear" Caption="Year"
                                 Width="80" />
                <dxpg:PivotGridField x:Name="fieldQuarter" FieldName="OrderDate" Area="ColumnArea" GroupInterval="DateQuarter" Caption="Quarter"
                                 Width="80" ValueFormat="Quarter {0}" />
                <dxpg:PivotGridField x:Name="fieldQuantity" FieldName="Quantity" Area="DataArea" Width="100" Caption="Quantity" CellFormat="f2" />
                <dxpg:PivotGridField x:Name="fieldExtendedPrice" FieldName="Extended Price" Area="DataArea" Width="100" Caption="Extended Price" />
            </dxpg:PivotGridControl.Fields>
        </dxpg:PivotGridControl>
    </dxdb:DemoModuleControl>
</local:PivotGridDemoModule>!�using System.Windows;
using DevExpress.Xpf.DemoBase;
using DevExpress.Xpf.Printing;

namespace PivotGridDemo.PivotGrid {
    public partial class PrintOptions : PivotGridDemoModule {

        public PrintOptions() {
            InitializeComponent();
            pivotGrid.DataSource = NWindData.SalesPerson;
        }

        private void Button_Click(object sender, RoutedEventArgs e) {
            pivotGrid.BestFit(true, false);
            ShowPrintPreview(pivotGrid);
        }
    }
}!�MSBAML```����IEPivotGridDemo, Version=13.1.4.0, Culture=neutral, PublicKeyToken=nullA%clr-namespace:PivotGridDemo.PivotGridPivotGridDemo.PivotGridfbDevExpress.Xpf.PivotGrid.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a}Wclr-namespace:DevExpress.Xpf.PivotGrid.Printing;assembly=DevExpress.Xpf.PivotGrid.v13.1!DevExpress.Xpf.PivotGrid.PrintingOKmscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0891&clr-namespace:System;assembly=mscorlibSystem,&PivotGridDemo.PivotGrid.PrintTemplates\XPresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNWindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35WSPresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35D9http://schemas.microsoft.com/winfx/2006/xaml/presentationRNSystem.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:x,http://schemas.microsoft.com/winfx/2006/xaml7local%clr-namespace:PivotGridDemo.PivotGridBdxpg7http://schemas.devexpress.com/winfx/2008/xaml/pivotgridcdxpgpWclr-namespace:DevExpress.Xpf.PivotGrid.Printing;assembly=DevExpress.Xpf.PivotGrid.v13.1Ldxpgi@http://schemas.devexpress.com/winfx/2008/xaml/pivotgrid/internala]DevExpress.Xpf.Core.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a?dxe5http://schemas.devexpress.com/winfx/2008/xaml/editorseaDevExpress.Xpf.Printing.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aBdxp6http://schemas.devexpress.com/winfx/2008/xaml/printing2sys&clr-namespace:System;assembly=mscorlib;dx2http://schemas.devexpress.com/winfx/2008/xaml/coree	aDevExpress.Xpf.DemoBase.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aAdxdb6http://schemas.devexpress.com/winfx/2008/xaml/demobase	�	Resources
5/PivotGridDemo.PivotGrid.MoonPhaseImageConverter MoonPhaseImageConverter cellTemplate%DevExpress.Xpf.Editors.TextEditName%DevExpress.Xpf.Editors.BaseEditIsPrintingMode	EditValue�Path�Mode0*DevExpress.Xpf.Printing.TextExportSettingsText	TextValueTextValueFormatString	XlsExportNativeFormat cellTotalTemplate2,PivotGridDemo.PivotGrid.CellTemplateSelector cellTemplateSelector
CellTemplateCellTotalTemplate 
valueTemplate valueTotalTemplate82PivotGridDemo.PivotGrid.FieldValueTemplateSelector fieldValueTemplateSelector
ValueTemplate
ValueTotalTemplate headerTemplate MoonPhaseTemplate��DataType60DevExpress.Xpf.PivotGrid.Internal.FieldValueItem�	Converter 	MoonPhaseExportTemplate,&DevExpress.Xpf.Printing.ExportSettings
TargetTypeBorderColorBorderThickness�%�&	&	&	;&	�77&	�&	&	�77&	�&	R7&		z7��.R�$Editor��.$	�4,2q���#C6D7ED�$DisplayText�$OneWay=���$Border���*HorizontalContentAlignment+�*
DisplayText+$OneWay=��*Value+$OneWay=��*
ValueFormat+$OneWay=�	�*UseNativeFormat+$OneWay=���.R�$Editor��.$	�4,2q���#C6D7ED��#F4F8FE�$DisplayText�$OneWay=���$Border���*HorizontalContentAlignment+�*
DisplayText+$OneWay=��*Value+$OneWay=��*
ValueFormat+$OneWay=�	�*UseNativeFormat+$OneWay=�8
8��.R�$Editor��.$	�4,2q���#C6D7ED��#EFF5FE�$DisplayText�$OneWay=���$Border���.R�$Editor��.$	�4,2q���#C6D7ED��#DCEAFB�$DisplayText�$OneWay=���$Border�88
��.R�$	TextBlock��.��#E0EDFF��#ADC9FF$	FalseX��*
DisplayText+$OneWay=���*BorderThickness+��*	Padding+��".R��._�����8��.R��$
�Stretch=����#808080$Panel=�$
#808080�����*Border+�*Border+._��$Image=�$0q����8.�/		)DevExpress.Xpf.DemoBase.DemoModuleControl		OptionsContent����Orientation$Vertical=�.+�$
DevExpress.Xpf.Core.GroupFrame
$��	Templates��$�0,0,0,12q�.�("DevExpress.Xpf.Editors.ListBoxEdit-Name$
templatesList��
ShowBorder.
SelectedIndex$0��Z�
StyleSettings:4DevExpress.Xpf.Editors.RadioListBoxEditStyleSettingsItems��$
��Default����$��
Moon Phase����$��Custom Print Theme���-$�
Print Preview��$�22��	Content./
)DevExpress.Xpf.PivotGrid.PivotGridControl
-
Name$	pivotGrid��-'PivotGridDemo.PivotGrid.FieldAreaHelperFixAreas.
RowTreeWidth$	135�#
AllowDragInCustomizationForm.
	AllowDrag.% 
PrintFieldCellTemplateSelector# [&!
PrintFieldValueTemplateSelector#!["

ShowBorder".
#
Fields#-'DevExpress.Xpf.PivotGrid.PivotGridField-$Name$$
fieldCategory��%	FieldName$%CategoryName��&Area$
&RowArea=�'Width$	'100Q�(Caption$(
Category Name��-$$fieldMoonPhase��$%ShippedDate��$&
ColumnArea=�)
GroupInterval$)Custom=�$(
Moon Phase��$'80Q�
*Height$*52Q�+
ValueTemplate#+[,PrintValueTemplate#,[	-Visible-.-$$	fieldYear��$%ShippedDate��$&
ColumnArea=�$)DateYear=�$
(Year��$'80Q�-$$fieldQuarter��$%ShippedDate��$&
ColumnArea=�$)DateQuarter=�$
(Quarter��$'80Q�.ValueFormat$.Quarter {0}��-$$
fieldSales��$%ProductSales��$&DataArea=�$	'100Q�$(Sales��!� <local:PivotGridDemoModule x:Class="PivotGridDemo.PivotGrid.PrintTemplates"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:PivotGridDemo.PivotGrid"
    xmlns:dxpg="http://schemas.devexpress.com/winfx/2008/xaml/pivotgrid"
    xmlns:dxpgp="clr-namespace:DevExpress.Xpf.PivotGrid.Printing;assembly=DevExpress.Xpf.PivotGrid.v13.1"
                               xmlns:dxpgi="http://schemas.devexpress.com/winfx/2008/xaml/pivotgrid/internal"
    xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
    xmlns:dxp="http://schemas.devexpress.com/winfx/2008/xaml/printing"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
    xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
    xmlns:dxdb="http://schemas.devexpress.com/winfx/2008/xaml/demobase">
    <local:PivotGridDemoModule.Resources>
        <ResourceDictionary>
            <local:MoonPhaseImageConverter x:Key="MoonPhaseImageConverter" />
            <DataTemplate x:Key="cellTemplate">
                <dxe:TextEdit x:Name="Editor" IsPrintingMode="True"
                   Padding="4,2"
                       EditValue="{Binding Path=DisplayText, Mode=OneWay}"
                       BorderThickness="{Binding Path=Border}"
                       HorizontalContentAlignment="{Binding HorizontalContentAlignment}"
                       BorderBrush="#C6D7ED"
                       dxp:TextExportSettings.Text="{Binding DisplayText, Mode=OneWay}"
                       dxp:TextExportSettings.TextValue="{Binding Value, Mode=OneWay}"
                       dxp:TextExportSettings.TextValueFormatString="{Binding ValueFormat, Mode=OneWay}"
                       dxp:TextExportSettings.XlsExportNativeFormat="{Binding UseNativeFormat, Mode=OneWay}"
                       />
            </DataTemplate>
            <DataTemplate x:Key="cellTotalTemplate">
                <dxe:TextEdit x:Name="Editor" IsPrintingMode="True"
                   Padding="4,2"
                       EditValue="{Binding Path=DisplayText, Mode=OneWay}"
                       BorderThickness="{Binding Path=Border}"
                       HorizontalContentAlignment="{Binding HorizontalContentAlignment}"
                       BorderBrush="#C6D7ED"
                       Background="#F4F8FE"
                       dxp:TextExportSettings.Text="{Binding DisplayText, Mode=OneWay}"
                       dxp:TextExportSettings.TextValue="{Binding Value, Mode=OneWay}"
                       dxp:TextExportSettings.TextValueFormatString="{Binding ValueFormat, Mode=OneWay}"
                       dxp:TextExportSettings.XlsExportNativeFormat="{Binding UseNativeFormat, Mode=OneWay}"
                       />
            </DataTemplate>
            <local:CellTemplateSelector x:Key="cellTemplateSelector" CellTemplate="{StaticResource cellTemplate}" CellTotalTemplate="{StaticResource cellTotalTemplate}" />
            <DataTemplate x:Key="valueTemplate">
                <dxe:TextEdit x:Name="Editor" IsPrintingMode="True"
                   Padding="4,2"
                       EditValue="{Binding Path=DisplayText, Mode=OneWay}"
                       BorderThickness="{Binding Path=Border}"
                       BorderBrush="#C6D7ED"
                       Background="#EFF5FE"
                       />
            </DataTemplate>
            <DataTemplate x:Key="valueTotalTemplate">
                <dxe:TextEdit x:Name="Editor" IsPrintingMode="True"
                   Padding="4,2"
                       EditValue="{Binding Path=DisplayText, Mode=OneWay}"
                       BorderThickness="{Binding Path=Border}"
                       BorderBrush="#C6D7ED"
                       Background="#DCEAFB"
                       />
            </DataTemplate>
            <local:FieldValueTemplateSelector x:Key="fieldValueTemplateSelector" ValueTemplate="{StaticResource valueTemplate}" ValueTotalTemplate="{StaticResource valueTotalTemplate}" />
            <DataTemplate x:Key="headerTemplate">
                <dxe:TextEdit x:Name="TextBlock" IsPrintingMode="True"
                   EditValue="{Binding DisplayText, Mode=OneWay}"
                   BorderThickness="{Binding BorderThickness}" Padding="{Binding Padding}"
                   Background="#E0EDFF"
                   BorderBrush="#ADC9FF"
                   dxp:TextExportSettings.XlsExportNativeFormat="False"
                   />
            </DataTemplate>
            <DataTemplate x:Key="MoonPhaseTemplate" DataType="{x:Type dxpgi:FieldValueItem}">
                <Border>
                    <Image Source="{Binding Converter={StaticResource MoonPhaseImageConverter}}" />
                </Border>
            </DataTemplate>
            <DataTemplate x:Key="MoonPhaseExportTemplate">
                <Border BorderThickness="{Binding Border}" HorizontalAlignment="Stretch"
                        BorderBrush="#808080"
                        dxp:ExportSettings.TargetType="Panel"
                        dxp:ExportSettings.BorderThickness="{Binding Border}"
                        dxp:ExportSettings.BorderColor="#808080">
                    <Image dxp:ExportSettings.TargetType="Image" dxp:ExportSettings.BorderThickness="0" Source="{Binding Converter={StaticResource MoonPhaseImageConverter}}" />
                </Border>
            </DataTemplate>
        </ResourceDictionary>
    </local:PivotGridDemoModule.Resources>

    <dxdb:DemoModuleControl>
        <dxdb:DemoModuleControl.OptionsContent>
            <StackPanel Orientation="Vertical">
                <dx:GroupFrame Header="Templates" Margin="0,0,0,12">
                    <dxe:ListBoxEdit x:Name="templatesList" ShowBorder="False" SelectedIndex="0" Background="{x:Null}" SelectedIndexChanged="templatesList_SelectedIndexChanged">
                        <dxe:ListBoxEdit.StyleSettings>
                            <dxe:RadioListBoxEditStyleSettings />
                        </dxe:ListBoxEdit.StyleSettings>
                        <dxe:ListBoxEdit.Items>
                            <TextBlock Text="Default" />
                            <TextBlock Text="Moon Phase" />
                            <TextBlock Text="Custom Print Theme" />
                        </dxe:ListBoxEdit.Items>
                    </dxe:ListBoxEdit>
                </dx:GroupFrame>
                <Button Content="Print Preview" Click="Button_Click" Height="22" />
            </StackPanel>
        </dxdb:DemoModuleControl.OptionsContent>

        <dxpg:PivotGridControl x:Name="pivotGrid" local:FieldAreaHelper.FixAreas="True" RowTreeWidth="135"
                          CustomGroupInterval="pivotGrid_CustomGroupInterval" AllowDragInCustomizationForm="False" AllowDrag="False"
                               PrintFieldCellTemplateSelector="{StaticResource cellTemplateSelector}"
                            PrintFieldValueTemplateSelector="{StaticResource fieldValueTemplateSelector}"
                          ShowBorder="False">
            <dxpg:PivotGridControl.Fields>
                <dxpg:PivotGridField x:Name="fieldCategory" FieldName="CategoryName" Area="RowArea" Width="100" Caption="Category Name" />
                <dxpg:PivotGridField x:Name="fieldMoonPhase" FieldName="ShippedDate" Area="ColumnArea" GroupInterval="Custom" Caption="Moon Phase"
                                 Width="80" Height="52" ValueTemplate="{StaticResource MoonPhaseTemplate}"
                                 PrintValueTemplate="{StaticResource MoonPhaseExportTemplate}" Visible="False" />
                <dxpg:PivotGridField x:Name="fieldYear" FieldName="ShippedDate" Area="ColumnArea" GroupInterval="DateYear" Caption="Year"
                                 Width="80" />
                <dxpg:PivotGridField x:Name="fieldQuarter" FieldName="ShippedDate" Area="ColumnArea" GroupInterval="DateQuarter" Caption="Quarter"
                                 Width="80" ValueFormat="Quarter {0}" />
                <dxpg:PivotGridField x:Name="fieldSales" FieldName="ProductSales" Area="DataArea" Width="100" Caption="Sales" />
            </dxpg:PivotGridControl.Fields>
        </dxpg:PivotGridControl>
    </dxdb:DemoModuleControl>
</local:PivotGridDemoModule>!c using System.Windows;
using DevExpress.Xpf.DemoBase;
using DevExpress.Xpf.Printing;
using System;
using DevExpress.Xpf.Core;
using DevExpress.Xpf.Core.Native;
using System.Collections.Generic;
using System.Windows.Media.Imaging;
using System.IO;
using System.Reflection;
using System.Windows.Controls;
using DevExpress.Xpf.PivotGrid.Internal;
using DevExpress.Xpf.PivotGrid;
using DevExpress.Xpf.PivotGrid.Printing;
using System.Windows.Data;

namespace PivotGridDemo.PivotGrid {
    public enum MoonPhase {
        NewMoon,
        WaxingCrescentMoon,
        FirstQuarterMoon,
        WaxingGibbousMoon,
        FullMoon,
        WaningGibbousMoon,
        LastQuarterMoon,
        WaningCrescentMoon
    }

    public partial class PrintTemplates:PivotGridDemoModule {
        DataTemplate defaultCellTemplate, defaultValueTemplate, defaultHeaderTemplate;
        DataTemplateSelector defaultCellTemplateSelector, defaultValueTemplateSelector;

        public PrintTemplates() {
            InitializeComponent();
            pivotGrid.DataSource = NWindData.ProductReports;
            SaveDefaultTemplates();
            ResetItems();
        }

        void SaveDefaultTemplates() {
            defaultCellTemplate = pivotGrid.PrintFieldCellTemplate;
            defaultValueTemplate = pivotGrid.PrintFieldValueTemplate;
            defaultHeaderTemplate = pivotGrid.PrintFieldHeaderTemplate;
            defaultCellTemplateSelector = pivotGrid.PrintFieldCellTemplateSelector;
            defaultValueTemplateSelector = pivotGrid.PrintFieldValueTemplateSelector;
        }

        void Button_Click(object sender, RoutedEventArgs e) {
            ShowPrintPreview(pivotGrid);
        }

        void pivotGrid_CustomGroupInterval(object sender, PivotCustomGroupIntervalEventArgs e) {
            DateTime date = (DateTime)e.Value;
            e.GroupValue = CalculateMoonPhase(date.Year, date.Month, date.Day);
        }

        static double GetFracPart(double value) {
            return value - Convert.ToDouble(Decimal.Truncate(Convert.ToDecimal(value)));
        }
        static MoonPhase MoonPhaseFromInt(int phase) {
            switch(phase) {
                case 0:
                    return MoonPhase.NewMoon;
                case 1:
                    return MoonPhase.WaxingCrescentMoon;
                case 2:
                    return MoonPhase.FirstQuarterMoon;
                case 3:
                    return MoonPhase.WaxingGibbousMoon;
                case 4:
                    return MoonPhase.FullMoon;
                case 5:
                    return MoonPhase.WaningGibbousMoon;
                case 6:
                    return MoonPhase.LastQuarterMoon;
                case 7:
                    return MoonPhase.WaningCrescentMoon;
                default:
                    throw new ArgumentException("Phase must be between 0 and 7", "phase");
            }
        }

        MoonPhase CalculateMoonPhase(int year, int month, int day) {
            double moonCycle = 29.53;
            double daysInMonth = 30.6;
            double daysInYear = 365.25;
            int phasesCount = 8;

            if(month < 3) {
                year--;
                month += 12;
            }
            month++;
            double totalDaysElapsed = daysInYear * year + daysInMonth * month + day - 694039.09;
            double phase = totalDaysElapsed / moonCycle;
            int result = (int)Math.Round(GetFracPart(phase) * phasesCount);
            return MoonPhaseFromInt(result == phasesCount ? 0 : result);
        }

        void ResetItems() {
            fieldCategory.Area = FieldArea.RowArea;
            fieldMoonPhase.Area = FieldArea.ColumnArea;
            fieldMoonPhase.Visible = false;
            fieldMoonPhase.FilterValues.Clear();
            fieldYear.Area = FieldArea.ColumnArea;
            fieldYear.Visible = true;
            fieldYear.AreaIndex = 0;
            fieldYear.FilterValues.Clear();
            fieldQuarter.Area = FieldArea.ColumnArea;
            fieldQuarter.Visible = true;
            fieldQuarter.AreaIndex = 1;
            fieldQuarter.FilterValues.Clear();
            fieldSales.Area = FieldArea.DataArea;
            fieldSales.Visible = true;
            fieldSales.FilterValues.Clear();
            if(defaultCellTemplate == null) return;
            pivotGrid.PrintFieldCellTemplate = defaultCellTemplate;
            pivotGrid.PrintFieldValueTemplate = defaultValueTemplate;
            pivotGrid.PrintFieldHeaderTemplate = defaultHeaderTemplate;
            pivotGrid.PrintFieldCellTemplateSelector = null;
            pivotGrid.PrintFieldValueTemplateSelector = null;
        }

        void templatesList_SelectedIndexChanged(object sender, RoutedEventArgs e) {
            if(!IsInitialized) return;
            ResetItems();
            if(templatesList.SelectedIndex == 1) {
                fieldYear.Visible = false;
                fieldQuarter.Visible = false;
                fieldMoonPhase.Visible = true;
            }
            if(templatesList.SelectedIndex == 2) {
                pivotGrid.PrintFieldCellTemplateSelector = defaultCellTemplateSelector;
                pivotGrid.PrintFieldValueTemplateSelector = defaultValueTemplateSelector;
                pivotGrid.PrintFieldCellTemplate = null;
                pivotGrid.PrintFieldValueTemplate = null;
                pivotGrid.PrintFieldHeaderTemplate = (DataTemplate)this.FindResource("headerTemplate");
            }
        }
    }

    public class CellTemplateSelector : DataTemplateSelector {

        public override DataTemplate SelectTemplate(object item, DependencyObject container) {
            PrintCellsAreaItem cellItem = item as PrintCellsAreaItem;
            if(cellItem == null)
                return base.SelectTemplate(item, container);
            else
                return cellItem.IsTotalAppearance ? CellTotalTemplate : CellTemplate;
        }

        public DataTemplate CellTemplate { get; set; }
        public DataTemplate CellTotalTemplate { get; set; }
    }

    public class FieldValueTemplateSelector : DataTemplateSelector {

        public override DataTemplate SelectTemplate(object item, DependencyObject container) {
            PrintFieldValueItem cellItem = item as PrintFieldValueItem;
            if(cellItem == null)
                return base.SelectTemplate(item, container);
            else
                return cellItem.IsTotalAppearance ? ValueTotalTemplate : ValueTemplate;
        }

        public DataTemplate ValueTemplate { get; set; }
        public DataTemplate ValueTotalTemplate { get; set; }
    }

    public class MoonPhaseImageConverter : IValueConverter {

        static Dictionary<string, BitmapImage> images = new Dictionary<string, BitmapImage>();
        static BitmapImage LoadImage(string imageName) {
            return new BitmapImage(new Uri(string.Format(@"/PivotGridDemo;component/Images/MoonPhase/{0}.png", imageName), UriKind.RelativeOrAbsolute));
        }

        static void image_ImageFailed(object sender, ExceptionRoutedEventArgs e) {
            throw new NotImplementedException();
        }

        static BitmapImage GetImage(string imageName) {
            BitmapImage image = null;
            if(!images.TryGetValue(imageName, out image)) {
                image = LoadImage(imageName);
                images.Add(imageName, image);
            }
            return image;
        }

        #region IValueConverter Members

        object IValueConverter.Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
            FieldValueItem item = value as FieldValueItem;
            if(item == null || !(item.Value is MoonPhase))
                return null;
            else
                return GetImage(item.Value.ToString());
        }

        object IValueConverter.ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
            throw new NotImplementedException();
        }

        #endregion
    }
}!�MSBAML```����OKmscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0891&clr-namespace:System;assembly=mscorlibSystemI2clr-namespace:System.Collections;assembly=mscorlibSystem.CollectionsIEPivotGridDemo, Version=13.1.4.0, Culture=neutral, PublicKeyToken=nullA%clr-namespace:PivotGridDemo.PivotGridPivotGridDemo.PivotGrid,&PivotGridDemo.PivotGrid.ProductReports\XPresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNWindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35WSPresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35D9http://schemas.microsoft.com/winfx/2006/xaml/presentationRNSystem.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:x,http://schemas.microsoft.com/winfx/2006/xaml6sys&clr-namespace:System;assembly=mscorlibJcollections2clr-namespace:System.Collections;assembly=mscorlib7local%clr-namespace:PivotGridDemo.PivotGridfbDevExpress.Xpf.PivotGrid.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aBdxpg7http://schemas.devexpress.com/winfx/2008/xaml/pivotgrida]DevExpress.Xpf.Core.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a?dxe5http://schemas.devexpress.com/winfx/2008/xaml/editorseaDevExpress.Xpf.DemoBase.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aAdxdb6http://schemas.devexpress.com/winfx/2008/xaml/demobase;dx2http://schemas.devexpress.com/winfx/2008/xaml/core.�/)DevExpress.Xpf.DemoBase.DemoModuleControlOptionsContent����Orientation$Vertical=�.+�$DevExpress.Xpf.Core.GroupFrame$��Product Reports��.�("DevExpress.Xpf.Editors.ListBoxEdit-Name$reportsList��%DevExpress.Xpf.Editors.BaseEdit
ShowBorder.
SelectedIndex$0��Z�
StyleSettings:4DevExpress.Xpf.Editors.RadioListBoxEditStyleSettingsItems��Category Sales����
Product Sales����Interval Grouping����Multiple Subtotals����
Average Sales����Top 3 Products��-$�
gbxOptions��$
��Options��$
�0,5,0,0q�.���.+�& DevExpress.Xpf.Editors.CheckEdit-$�
showDrillDown��	IsChecked$
TrueY�Content)#DevExpress.Xpf.Core.ObjectConverter$/)Show Drill Down Form on Cell Double Click-$�cbxShowCategories��$Show Categories$y�	Collapsed=�$
�0,4,0,0q��-$�spGroupingLayout��$y�	Collapsed=�$
�0,4,0,0q�	�ColumnDefinitions	��$�*���$�*�.+���-
��Name$
tbGroupingLayout��$��Grouping Layout��$�Center=�)#DevExpress.Xpf.Editors.ComboBoxEdit-$�cbeGroupingLayout��$�1�$
�0,0,0,0q�'	!DevExpress.Xpf.Editors.ButtonEdit	IsTextEditable.+
%DevExpress.Xpf.Editors.LookUpEditBase

SelectedIndex$1�
Items
��by Years����by Quarters����by Month����by Years, Quarters, Month��Content./)DevExpress.Xpf.PivotGrid.PivotGridControl-Name$	pivotGrid��-'PivotGridDemo.PivotGrid.FieldAreaHelperFixAreas.RowTreeWidth$	230�
ShowBorder.
Fields-
'DevExpress.Xpf.PivotGrid.PivotGridField
-	
Name$
fieldCategory��
	FieldName$CategoryName��
Area$
RowArea=�
Width$	130Q�
Caption$
Category Name��
-
$fieldProduct��$ProductName��$
FilterArea=�$	200Q�$Product Name��
-$
fieldSales��

CellFormat$c��$ProductSales��$DataArea=�$	135Q�$
Product Sales��
-$fieldAverageSale��$c��$ProductSales��$DataArea=�$90Q�$Average Sale��
SummaryType$
Average=�
Visible.
-
$fieldMinimumSale��$c��$ProductSales��$DataArea=�$90Q�$Minimum Sale��$	Min=�.
-$	fieldYear��$ShippedDate��$
FilterArea=�

GroupInterval$DateYear=�$Shipped Year��$	150Q�
-$fieldQuarter��$ShippedDate��$
FilterArea=�$DateQuarter=�
ValueFormat$
Qtr {0}��$Shipped Quarter��$	150Q�
-$
fieldMonth��$ShippedDate��$
FilterArea=�.$	DateMonth=�$
Shipped Month��$70Q�!�<local:PivotGridDemoModule x:Class="PivotGridDemo.PivotGrid.ProductReports"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:sys="clr-namespace:System;assembly=mscorlib"
    xmlns:collections="clr-namespace:System.Collections;assembly=mscorlib"
    xmlns:local="clr-namespace:PivotGridDemo.PivotGrid"
    xmlns:dxpg="http://schemas.devexpress.com/winfx/2008/xaml/pivotgrid"
    xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
    xmlns:dxdb="http://schemas.devexpress.com/winfx/2008/xaml/demobase"
    xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core">

    <dxdb:DemoModuleControl>
        <dxdb:DemoModuleControl.OptionsContent>
            <StackPanel Orientation="Vertical">
                <dx:GroupFrame Header="Product Reports">
                    <dxe:ListBoxEdit x:Name="reportsList" ShowBorder="False" SelectedIndex="0" Background="{x:Null}" SelectedIndexChanged="ReportsList_SelectionChanged">
                        <dxe:ListBoxEdit.StyleSettings>
                            <dxe:RadioListBoxEditStyleSettings />
                        </dxe:ListBoxEdit.StyleSettings>
                        <dxe:ListBoxEdit.Items>
                            <sys:String>Category Sales</sys:String>
                            <sys:String>Product Sales</sys:String>
                            <sys:String>Interval Grouping</sys:String>
                            <sys:String>Multiple Subtotals</sys:String>
                            <sys:String>Average Sales</sys:String>
                            <sys:String>Top 3 Products</sys:String>
                        </dxe:ListBoxEdit.Items>
                    </dxe:ListBoxEdit>
                </dx:GroupFrame>
                <dx:GroupFrame Header="Options" Margin="0,5,0,0" Name="gbxOptions">
                    <StackPanel>
                        <dxe:CheckEdit IsChecked="True" Content="Show Drill Down Form on Cell Double Click" Name="showDrillDown" />
                        <dxe:CheckEdit Content="Show Categories" Name="cbxShowCategories" Checked="cbxShowCategories_Checked" Unchecked="cbxShowCategories_Checked" Visibility="Collapsed" Margin="0,4,0,0" />
                        <Grid Name="spGroupingLayout" Visibility="Collapsed" Margin="0,4,0,0">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*"/>
                                <ColumnDefinition Width="*"/>
                            </Grid.ColumnDefinitions>
                            <TextBlock Text="Grouping Layout" x:Name="tbGroupingLayout" VerticalAlignment="Center" />
                            <dxe:ComboBoxEdit Grid.Column="1" Margin="0,0,0,0" IsTextEditable="False" SelectedIndex="1" SelectedIndexChanged="ComboBoxEdit_SelectedIndexChanged" Name="cbeGroupingLayout">
                                <dxe:ComboBoxEdit.Items>
                                    <sys:String>by Years</sys:String>
                                    <sys:String>by Quarters</sys:String>
                                    <sys:String>by Month</sys:String>
                                    <sys:String>by Years, Quarters, Month</sys:String>
                                </dxe:ComboBoxEdit.Items>
                            </dxe:ComboBoxEdit>
                        </Grid>
                    </StackPanel>
                </dx:GroupFrame>

            </StackPanel>
        </dxdb:DemoModuleControl.OptionsContent>

        <dxpg:PivotGridControl x:Name="pivotGrid" local:FieldAreaHelper.FixAreas="True" CellDoubleClick="pivotGrid_CellDblClick"
            RowTreeWidth="230" ShowBorder="False">
            <dxpg:PivotGridControl.Fields>
                <dxpg:PivotGridField x:Name="fieldCategory" FieldName="CategoryName" Area="RowArea" Width="130" Caption="Category Name" />
                <dxpg:PivotGridField x:Name="fieldProduct" FieldName="ProductName" Area="FilterArea"
                                 Width="200" Caption="Product Name" />
                <dxpg:PivotGridField x:Name="fieldSales" CellFormat="c" FieldName="ProductSales" Area="DataArea" Width="135" Caption="Product Sales" />
                <dxpg:PivotGridField x:Name="fieldAverageSale" CellFormat="c" FieldName="ProductSales" Area="DataArea" Width="90" Caption="Average Sale" SummaryType="Average" Visible="False"
                                 />
                <dxpg:PivotGridField x:Name="fieldMinimumSale" CellFormat="c" FieldName="ProductSales" Area="DataArea" Width="90" Caption="Minimum Sale" SummaryType="Min" Visible="False"
                                 />
                <dxpg:PivotGridField x:Name="fieldYear" FieldName="ShippedDate" Area="FilterArea"
                                 GroupInterval="DateYear" Caption="Shipped Year" Width="150" />
                <dxpg:PivotGridField x:Name="fieldQuarter" FieldName="ShippedDate" Area="FilterArea"
                                 GroupInterval="DateQuarter" ValueFormat="Qtr {0}" Caption="Shipped Quarter" Width="150" />
                <dxpg:PivotGridField x:Name="fieldMonth" FieldName="ShippedDate" Area="FilterArea"
                                 Visible="False"
                                 GroupInterval="DateMonth" Caption="Shipped Month" Width="70" />
            </dxpg:PivotGridControl.Fields>
        </dxpg:PivotGridControl>
    </dxdb:DemoModuleControl>
</local:PivotGridDemoModule>!�using System;
using System.Windows.Data;
using System.Windows.Markup;
using DevExpress.Xpf.DemoBase;
using System.Windows;
using DevExpress.Xpf.Core;
using DevExpress.Xpf.PivotGrid;
using DevExpress.Xpf.Editors;
using System.Windows.Controls;
using DevExpress.Xpf.Themes;
using DevExpress.Xpf.Grid;


namespace PivotGridDemo.PivotGrid {
    public partial class ProductReports : PivotGridDemoModule {
        FloatingContainer popupContainer;
        public ProductReports() {
            InitializeComponent();
            pivotGrid.DataSource = NWindData.ProductReports;
        }
        void ReportsList_SelectionChanged(object sender, RoutedEventArgs e) {
            if(fieldCategory == null) return;

            fieldCategory.Area = FieldArea.RowArea;
            fieldProduct.Area = FieldArea.FilterArea;
            fieldQuarter.Area = FieldArea.FilterArea;
            fieldYear.Area = FieldArea.FilterArea;
            fieldAverageSale.Visible = false;
            fieldMinimumSale.Visible = false;
            fieldProduct.SortByField = null;
            fieldProduct.SortOrder = FieldSortOrder.Ascending;
            fieldProduct.TopValueCount = 0;
            fieldMonth.Area = FieldArea.FilterArea;
            fieldMonth.Visible = false;
            fieldQuarter.Area = FieldArea.FilterArea;
            fieldCategory.TotalsVisibility = FieldTotalsVisibility.AutomaticTotals;
            fieldCategory.CustomTotals.Clear();
            cbxShowCategories.Visibility = System.Windows.Visibility.Collapsed;
            spGroupingLayout.Visibility = System.Windows.Visibility.Collapsed;

            switch(reportsList.SelectedIndex) {
                case 0:
                    fieldCategory.Area = FieldArea.RowArea;
                    fieldProduct.Area = FieldArea.FilterArea;
                    break;
                case 1:
                    fieldCategory.Area = FieldArea.FilterArea;
                    fieldProduct.Area = FieldArea.RowArea;
                    cbxShowCategories.Visibility = System.Windows.Visibility.Visible;
                    break;
                case 2:
                    fieldMonth.Visible = true;
                    fieldCategory.Area = FieldArea.RowArea;
                    fieldProduct.Area = FieldArea.RowArea;
                    fieldQuarter.Area = FieldArea.ColumnArea;
                    fieldProduct.AreaIndex = 1;
                    spGroupingLayout.Visibility = System.Windows.Visibility.Visible;
                    ComboBoxEdit_SelectedIndexChanged(cbeGroupingLayout, e);
                    break;
                case 3:
                    fieldCategory.TotalsVisibility = FieldTotalsVisibility.CustomTotals;
                    fieldCategory.Area = FieldArea.RowArea;
                    fieldProduct.Area = FieldArea.RowArea;
                    fieldCategory.CustomTotals.Add(FieldSummaryType.Average);
                    fieldCategory.CustomTotals.Add(FieldSummaryType.Sum);
                    fieldCategory.CustomTotals.Add(FieldSummaryType.Max);
                    fieldCategory.CustomTotals.Add(FieldSummaryType.Min);
                    fieldMonth.Visible = true;
                    fieldQuarter.Area = FieldArea.ColumnArea;
                    fieldYear.Area = FieldArea.ColumnArea;
                    fieldProduct.AreaIndex = 1;
                    break;
                case 4:
                    fieldQuarter.SetAreaPosition(FieldArea.RowArea, 0);
                    fieldCategory.Area = FieldArea.RowArea;
                    fieldAverageSale.SetAreaPosition(FieldArea.DataArea, 1);
                    fieldMinimumSale.SetAreaPosition(FieldArea.DataArea, 2);
                    fieldAverageSale.Visible = fieldMinimumSale.Visible = true;
                    fieldCategory.AreaIndex = 1;
                    break;
                case 5:
                    fieldProduct.Area = FieldArea.RowArea;
                    fieldCategory.Area = FieldArea.RowArea;
                    fieldProduct.SortByField = fieldSales;
                    fieldProduct.SortOrder = FieldSortOrder.Descending;
                    fieldProduct.TopValueCount = 3;
                    fieldProduct.AreaIndex = 1;
                    break;
            }
        }
        private void cbxShowCategories_Checked(object sender, RoutedEventArgs e) {
            fieldCategory.Area = cbxShowCategories.IsChecked.Value ? FieldArea.RowArea : FieldArea.FilterArea;
            fieldCategory.AreaIndex = 0;
        }
        private void ComboBoxEdit_SelectedIndexChanged(object sender, RoutedEventArgs e) {
            if(fieldMonth == null) return;
            switch(((ComboBoxEdit)sender).SelectedIndex) {
                case 0:
                    fieldQuarter.Area = FieldArea.FilterArea;
                    fieldMonth.Area = FieldArea.FilterArea;
                    fieldYear.Area = FieldArea.ColumnArea;
                    break;
                case 1:
                    fieldYear.Area = FieldArea.FilterArea;
                    fieldMonth.Area = FieldArea.FilterArea;
                    fieldQuarter.Area = FieldArea.ColumnArea;
                    break;
                case 2:
                    fieldYear.Area = FieldArea.FilterArea;
                    fieldQuarter.Area = FieldArea.FilterArea;
                    fieldMonth.Area = FieldArea.ColumnArea;
                    break;
                case 3:
                    fieldYear.Area = FieldArea.ColumnArea;
                    fieldQuarter.Area = FieldArea.ColumnArea;
                    fieldMonth.Area = FieldArea.ColumnArea;
                    break;
            }
        }

        private void pivotGrid_CellDblClick(object sender, PivotCellEventArgs e) {
            if(!showDrillDown.IsChecked.Value) return;
            GridControl grid = new GridControl();
            ThemeManager.SetThemeName(grid, ThemeManager.ApplicationThemeName);
            grid.HorizontalAlignment = HorizontalAlignment.Stretch;
            grid.VerticalAlignment = VerticalAlignment.Stretch;
            PivotDrillDownDataSource ds = e.CreateDrillDownDataSource();
            grid.View = new TableView() { AllowPerPixelScrolling = true };
            grid.ItemsSource = ds;
            grid.PopulateColumns();
            grid.ShowBorder = false;
            popupContainer = FloatingContainer.ShowDialog(grid, this, new Size(520, 300),
                new FloatingContainerParameters() {
                    AllowSizing = true,
                    CloseOnEscape = true,
                    Title = "Drill Down Form",
                    ClosedDelegate = null
                });
            AddLogicalChild(popupContainer);
        }
    }
}!w
MSBAML```����OKmscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0891&clr-namespace:System;assembly=mscorlibSystemI2clr-namespace:System.Collections;assembly=mscorlibSystem.CollectionsIEPivotGridDemo, Version=13.1.4.0, Culture=neutral, PublicKeyToken=nullA%clr-namespace:PivotGridDemo.PivotGridPivotGridDemo.PivotGrid+%PivotGridDemo.PivotGrid.Serialization\XPresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNWindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35WSPresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35D9http://schemas.microsoft.com/winfx/2006/xaml/presentationRNSystem.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:x,http://schemas.microsoft.com/winfx/2006/xaml6sys&clr-namespace:System;assembly=mscorlibJcollections2clr-namespace:System.Collections;assembly=mscorlib7local%clr-namespace:PivotGridDemo.PivotGridfbDevExpress.Xpf.PivotGrid.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aBdxpg7http://schemas.devexpress.com/winfx/2008/xaml/pivotgrida]DevExpress.Xpf.Core.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a?dxe5http://schemas.devexpress.com/winfx/2008/xaml/editorseaDevExpress.Xpf.DemoBase.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aAdxdb6http://schemas.devexpress.com/winfx/2008/xaml/demobase;dx2http://schemas.devexpress.com/winfx/2008/xaml/core1+PivotGridDemo.PivotGrid.PivotGridDemoModule
Loaded$ PivotGridDemoModule_Loaded��.�/)DevExpress.Xpf.DemoBase.DemoModuleControlOptionsContent����Orientation$Vertical=�.+�$DevExpress.Xpf.Core.GroupFrame$��Layout��.���.+��-$�Save Layout��$
�0,0,0,4q��-$�restoreLayoutButton��$�Restore Layout��{�.$��Layout Samples��$
�0,5,0,0q�.���.+���$
Horizontal=�$
�0,0,0,4q�.+���$
��Select:��$�Center=�$
�0,0,4,0q�)#DevExpress.Xpf.Editors.ComboBoxEdit-$�layoutSamplesComboBox��$	�100��'!DevExpress.Xpf.Editors.ButtonEditIsTextEditable.Items�-$
�Load��Content./)DevExpress.Xpf.PivotGrid.PivotGridControl-Name$	pivotGrid��-'PivotGridDemo.PivotGrid.FieldAreaHelperFixAreas.RowTreeWidth$	230�	
ShowBorder	.
Fields
-'DevExpress.Xpf.PivotGrid.PivotGridField-Name$	fieldYear��	FieldName$	OrderDate��
Area$

ColumnArea=�
GroupInterval$DateYear=�Width$80Q�Caption$
Order Year��	SortOrder$
Descending=�-$fieldQuarter��$	OrderDate��$

ColumnArea=�$DateQuarter=�ValueFormat$
Qtr {0}��$90Q�$
Order Quarter��-$
fieldMonth��$	OrderDate��$

FilterArea=�$	DateMonth=�$80Q�$Order Month��-	$fieldCompanyName��$CompanyName��$

RowArea=�$	150Q�$Customer��-
$fieldProductName��$ProductName��$

RowArea=�$	120Q�$Product Name��-$fieldProductAmount��$
ProductAmount��$
DataArea=�$70Q�$Product Amount��
CellFormat$c��!L<local:PivotGridDemoModule x:Class="PivotGridDemo.PivotGrid.Serialization"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:sys="clr-namespace:System;assembly=mscorlib"
    xmlns:collections="clr-namespace:System.Collections;assembly=mscorlib"
    xmlns:local="clr-namespace:PivotGridDemo.PivotGrid"
    xmlns:dxpg="http://schemas.devexpress.com/winfx/2008/xaml/pivotgrid"
    xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
    xmlns:dxdb="http://schemas.devexpress.com/winfx/2008/xaml/demobase"
    xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core" Loaded="PivotGridDemoModule_Loaded">

    <dxdb:DemoModuleControl>
        <dxdb:DemoModuleControl.OptionsContent>
            <StackPanel Orientation="Vertical">
                <dx:GroupFrame Header="Layout">
                    <StackPanel>
                        <Button Content="Save Layout" Click="SaveLayoutButton_Click" Margin="0,0,0,4" />
                        <Button Content="Restore Layout" Click="RestoreLayoutButton_Click" IsEnabled="False"
                            Name="restoreLayoutButton" />
                    </StackPanel>
                </dx:GroupFrame>
                <dx:GroupFrame Header="Layout Samples" Margin="0,5,0,0">
                    <StackPanel>
                        <StackPanel Orientation="Horizontal" Margin="0,0,0,4">
                            <TextBlock Text="Select:" VerticalAlignment="Center" Margin="0,0,4,0" />
                            <dxe:ComboBoxEdit Width="100" Name="layoutSamplesComboBox" IsTextEditable="False">
                                <dxe:ComboBoxEdit.Items>
                                </dxe:ComboBoxEdit.Items>
                            </dxe:ComboBoxEdit>
                        </StackPanel>
                        <Button Content="Load" Click="LoadSampleButton_Click" />
                    </StackPanel>
                </dx:GroupFrame>
            </StackPanel>
        </dxdb:DemoModuleControl.OptionsContent>

        <dxpg:PivotGridControl x:Name="pivotGrid" local:FieldAreaHelper.FixAreas="True"
                               RowTreeWidth="230" ShowBorder="False">
            <dxpg:PivotGridControl.Fields>
                <dxpg:PivotGridField x:Name="fieldYear" FieldName="OrderDate" Area="ColumnArea" GroupInterval="DateYear"
                                 Width="80"
                                 Caption="Order Year" SortOrder="Descending" />
                <dxpg:PivotGridField x:Name="fieldQuarter" FieldName="OrderDate" Area="ColumnArea" GroupInterval="DateQuarter"
                                 ValueFormat="Qtr {0}" Width="90"
                                 Caption="Order Quarter" />
                <dxpg:PivotGridField x:Name="fieldMonth" FieldName="OrderDate" Area="FilterArea" GroupInterval="DateMonth"
                                 Width="80"
                                 Caption="Order Month" />
                <dxpg:PivotGridField x:Name="fieldCompanyName" FieldName="CompanyName" Area="RowArea" Width="150" Caption="Customer" />
                <dxpg:PivotGridField x:Name="fieldProductName" FieldName="ProductName" Area="RowArea" Width="120" Caption="Product Name" />
                <dxpg:PivotGridField x:Name="fieldProductAmount" FieldName="ProductAmount" Area="DataArea" Width="70"
                                 Caption="Product Amount" CellFormat="c" />
            </dxpg:PivotGridControl.Fields>
        </dxpg:PivotGridControl>
    </dxdb:DemoModuleControl>
</local:PivotGridDemoModule>!using System;
using System.Collections.Generic;
using System.IO;
using System.Reflection;
using System.Windows;
using DevExpress.Xpf.Core;
using DevExpress.Xpf.DemoBase;
using DevExpress.Xpf.DemoBase.Helpers;
using DevExpress.Xpf.PivotGrid;

namespace PivotGridDemo.PivotGrid {
    public partial class Serialization : PivotGridDemoModule {
        MemoryStream currentLayoutStream;

        public Serialization() {
            InitializeComponent();
            pivotGrid.DataSource = NWindData.CustomerReports;

        }

        private void LoadSampleButton_Click(object sender, RoutedEventArgs e) {
            RestoreLayout(((LayoutSampleBase)layoutSamplesComboBox.SelectedItem).GetStream());
            pivotGrid.BestFit(FieldArea.RowArea, true, false);
            pivotGrid.BestFitColumn(pivotGrid.ColumnCount - 1);
        }

        private void SaveLayoutButton_Click(object sender, RoutedEventArgs e) {
            currentLayoutStream = SaveLayout();
            restoreLayoutButton.IsEnabled = true;
        }

        private void RestoreLayoutButton_Click(object sender, RoutedEventArgs e) {
            RestoreLayout(currentLayoutStream);
        }


        private void PivotGridDemoModule_Loaded(object sender, RoutedEventArgs e) {
            List<LayoutSampleBase> layoutSamples = new List<LayoutSampleBase>();
            layoutSamples.Add(new MemoryStreamLayoutSample("Original", SaveLayout()));
            Assembly assembly = typeof(Serialization).Assembly;
            layoutSamples.Add(new ResourceLayoutSample("Brief view", DemoHelper.GetPath("PivotGridDemo.Data.LayoutSamples.", assembly) + "BriefView.xml"));
            layoutSamples.Add(new ResourceLayoutSample("Full view", DemoHelper.GetPath("PivotGridDemo.Data.LayoutSamples.", assembly) + "FullView.xml"));
            layoutSamplesComboBox.ItemsSource = layoutSamples;
            layoutSamplesComboBox.SelectedIndex = 0;
        }

        MemoryStream SaveLayout() {
            MemoryStream stream = new MemoryStream();
            pivotGrid.SaveLayoutToStream(stream);
            return stream;
        }
        void RestoreLayout(Stream stream) {
            if(stream == null)
                return;
            stream.Position = 0;
            pivotGrid.RestoreLayoutFromStream(stream);
        }

        public abstract class LayoutSampleBase {
            readonly string description;
            public LayoutSampleBase(string description) {
                this.description = description;
            }
            public abstract Stream GetStream();
            public override string ToString() {
                return description;
            }
        }
        public class ResourceLayoutSample : LayoutSampleBase {
            readonly string resourcePath;
            public ResourceLayoutSample(string description, string resourcePath)
                : base(description) {
                this.resourcePath = resourcePath;
            }
            public override Stream GetStream() {
                return Assembly.GetExecutingAssembly().GetManifestResourceStream(resourcePath);
            }
        }
        public class MemoryStreamLayoutSample : LayoutSampleBase {
            readonly MemoryStream stream;
            public MemoryStreamLayoutSample(string description, MemoryStream stream)
                : base(description) {
                this.stream = stream;
            }
            public override Stream GetStream() {
                return stream;
            }
        }


    }
}!MSBAML```����IEPivotGridDemo, Version=13.1.4.0, Culture=neutral, PublicKeyToken=nullA%clr-namespace:PivotGridDemo.PivotGridPivotGridDemo.PivotGrid)#PivotGridDemo.PivotGrid.SingleTotal\XPresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNWindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35WSPresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35D9http://schemas.microsoft.com/winfx/2006/xaml/presentationRNSystem.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:x,http://schemas.microsoft.com/winfx/2006/xaml7local%clr-namespace:PivotGridDemo.PivotGridfbDevExpress.Xpf.PivotGrid.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aBdxpg7http://schemas.devexpress.com/winfx/2008/xaml/pivotgrida]DevExpress.Xpf.Core.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a?dxe5http://schemas.devexpress.com/winfx/2008/xaml/editors;dx2http://schemas.devexpress.com/winfx/2008/xaml/coreeaDevExpress.Xpf.DemoBase.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aAdxdb6http://schemas.devexpress.com/winfx/2008/xaml/demobase$	�300��$	�300��.�/)DevExpress.Xpf.DemoBase.DemoModuleControlOptionsContent����Orientation$Vertical=�$	�240��.+�$DevExpress.Xpf.Core.GroupFrame$ ��DataField Summary Settings��$
�0,0,0,8q�.���RowDefinitions�$��*��$��*��ColumnDefinitions��$�*���$�*�.+���$�0�$��0�$�Center=�$
�0,0,8,4q�Field:)#DevExpress.Xpf.Editors.ComboBoxEdit-$
�cbField��$�1�$��0�$�Center=�$
�Stretch=�$
�0,0,0,4q�'!DevExpress.Xpf.Editors.ButtonEditIsTextEditable.$�85����$�0�$��1�$�Center=�$
�0,0,8,0q�
Summary Type:-$�
cbSummaryType��$�1�$��1�$�Center=�$
�Stretch=�.$�85��$��View Options��$
�Stretch=�.���.+�& DevExpress.Xpf.Editors.CheckEdit-$"�ceShowColumnGrandTotalHeader��Content)#DevExpress.Xpf.Core.ObjectConverter$$Show Column Grand Total Header$�16��$
�0,0,0,4q�	IsChecked��ElementName$	pivotGrid���Path$ ShowColumnGrandTotalHeader�	�Mode$	TwoWay=�-$�ceShowColumnGrandTotals��$Show Column Grand Totals$�16��$
�0,0,0,4q��$	pivotGrid��$ShowColumnGrandTotals�$	TwoWay=�-$�ceShowColumnTotals��$Show Column Totals$�16��$
�0,0,0,4q��$	pivotGrid��$ShowColumnTotals�$	TwoWay=�-$�ceShowRowGrandTotalHeader��$!Show Row Grand Total Header$�16��$
�0,0,0,4q��$	pivotGrid��$ShowRowGrandTotalHeader�$	TwoWay=�-$�ceShowRowGrandTotals��$Show Row Grand Totals$�16��$
�0,0,0,4q��$	pivotGrid��$ShowRowGrandTotals�$	TwoWay=�-$�ceShowRowTotals��$Show Row Totals$�16��$
�0,0,0,4q��$	pivotGrid��$
ShowRowTotals�$	TwoWay=�-	$&� ceShowGrandTotalsForSingleValues��$)#Show Grand Totals For Single Values$�16��$
�0,0,0,4q��$	pivotGrid��$$ShowGrandTotalsForSingleValues�$	TwoWay=�-
$!�ceShowTotalsForSingleValues��$#Show Totals For Single Values$�16��$
�0,0,0,4q��$	pivotGrid��$ShowTotalsForSingleValues�$	TwoWay=�
Content.
/)DevExpress.Xpf.PivotGrid.PivotGridControl-Name$	pivotGrid��-'PivotGridDemo.PivotGrid.FieldAreaHelperFixAreas.
RowTotalsLocation$	
Far=�RowTreeWidth$	305�
ShowBorder.$
�Stretch=�ShowColumnGrandTotals.ShowFilterHeaders.DataFieldAreaIndex$2�
DataFieldArea$
ColumnArea=�DataFieldCaption$
Data��#SummaryDataSourceFieldNaming$	FieldName=�
Fields-	'DevExpress.Xpf.PivotGrid.PivotGridField	-	Name$fieldProduct��		FieldName$ProductName��	Area$
RowArea=�		AreaIndex$1�	Width$	215Q�	Caption$Product Name��	-
$
fieldCategory��$CategoryName��$
RowArea=�$0�$	130Q�$
Category Name��	-$fieldQuarter��	ValueFormat$Quarter {0}��$	OrderDate��$1�$
ColumnArea=�	
GroupInterval$DateQuarter=�$80Q�$
Quarter��	-$	fieldYear��$	OrderDate��$
ColumnArea=�$DateYear=�$0�$80Q�$
Year��	-$
fieldQuantity��$Quantity��	SummaryType$	Sum=� 	ShowSummaryTypeName .$1�$DataArea=�$70Q�$Quantity��	-$
fieldDiscount��$Discount��$
Average=� .$2�$DataArea=�$70Q�$Discount��!	
CellFormat$!p��$p��	-$fieldUnitPrice��$	UnitPrice��$	Max=� .$0�$DataArea=�$	130Q�$
Unit Price��!�<local:PivotGridDemoModule x:Class="PivotGridDemo.PivotGrid.SingleTotal"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:PivotGridDemo.PivotGrid"
    xmlns:dxpg="http://schemas.devexpress.com/winfx/2008/xaml/pivotgrid"
    xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
    xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
    xmlns:dxdb="http://schemas.devexpress.com/winfx/2008/xaml/demobase"
    Height="300" Width="300">

    <dxdb:DemoModuleControl>
        <dxdb:DemoModuleControl.OptionsContent>
            <StackPanel Orientation="Vertical" MinWidth="240">
                <dx:GroupFrame Header="DataField Summary Settings" Margin="0,0,0,8">
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="*"/>
                            <RowDefinition Height="*"/>
                        </Grid.RowDefinitions>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="*"/>
                            <ColumnDefinition Width="*"/>
                        </Grid.ColumnDefinitions>
                        <TextBlock Grid.Column="0" Grid.Row="0" VerticalAlignment="Center" Margin="0,0,8,4">Field:</TextBlock>
                        <dxe:ComboBoxEdit Grid.Column="1" Grid.Row="0"
                        Name="cbField" VerticalAlignment="Center" HorizontalAlignment="Stretch"
                        Margin="0,0,0,4"
                        IsTextEditable="False" Width="85" SelectedIndexChanged="cbField_SelectedIndexChanged" />
                        <TextBlock Grid.Column="0" Grid.Row="1" VerticalAlignment="Center" Margin="0,0,8,0">Summary Type:</TextBlock>
                        <dxe:ComboBoxEdit Grid.Column="1" Grid.Row="1"
                        Name="cbSummaryType" VerticalAlignment="Center" HorizontalAlignment="Stretch"
                        IsTextEditable="False" Width="85" SelectedIndexChanged="cbSummaryType_SelectedIndexChanged" />
                    </Grid>
                </dx:GroupFrame>
                <dx:GroupFrame Header="View Options" VerticalAlignment="Stretch">
                    <StackPanel>

                        <dxe:CheckEdit IsChecked="{Binding ElementName=pivotGrid, Path=ShowColumnGrandTotalHeader, Mode=TwoWay}" Content="Show Column Grand Total Header" Name="ceShowColumnGrandTotalHeader" Height="16" Margin="0,0,0,4" />
                        <dxe:CheckEdit IsChecked="{Binding ElementName=pivotGrid, Path=ShowColumnGrandTotals, Mode=TwoWay}" Content="Show Column Grand Totals" Name="ceShowColumnGrandTotals" Height="16" Margin="0,0,0,4" />
                        <dxe:CheckEdit IsChecked="{Binding ElementName=pivotGrid, Path=ShowColumnTotals, Mode=TwoWay}" Content="Show Column Totals" Name="ceShowColumnTotals" Height="16" Margin="0,0,0,4" />

                        <dxe:CheckEdit IsChecked="{Binding ElementName=pivotGrid, Path=ShowRowGrandTotalHeader, Mode=TwoWay}" Content="Show Row Grand Total Header" Name="ceShowRowGrandTotalHeader" Height="16" Margin="0,0,0,4" />
                        <dxe:CheckEdit IsChecked="{Binding ElementName=pivotGrid, Path=ShowRowGrandTotals, Mode=TwoWay}" Content="Show Row Grand Totals" Name="ceShowRowGrandTotals" Height="16" Margin="0,0,0,4" />
                        <dxe:CheckEdit IsChecked="{Binding ElementName=pivotGrid, Path=ShowRowTotals, Mode=TwoWay}" Content="Show Row Totals" Name="ceShowRowTotals" Height="16" Margin="0,0,0,4" />

                        <dxe:CheckEdit IsChecked="{Binding ElementName=pivotGrid, Path=ShowGrandTotalsForSingleValues, Mode=TwoWay}" Content="Show Grand Totals For Single Values" Name="ceShowGrandTotalsForSingleValues" Height="16" Margin="0,0,0,4" />
                        <dxe:CheckEdit IsChecked="{Binding ElementName=pivotGrid, Path=ShowTotalsForSingleValues, Mode=TwoWay}" Content="Show Totals For Single Values" Name="ceShowTotalsForSingleValues" Height="16" Margin="0,0,0,4" />
                    </StackPanel>
                </dx:GroupFrame>
            </StackPanel>
        </dxdb:DemoModuleControl.OptionsContent>

        <dxpg:PivotGridControl x:Name="pivotGrid" local:FieldAreaHelper.FixAreas="True" CustomSummary="OnPivotGridCustomSummary" RowTotalsLocation="Far"
                               RowTreeWidth="305" ShowBorder="False" VerticalAlignment="Stretch" ShowColumnGrandTotals="False" ShowFilterHeaders="False" DataFieldAreaIndex="2" DataFieldArea="ColumnArea" DataFieldCaption="Data" SummaryDataSourceFieldNaming="FieldName" Loaded="pivotGrid_Loaded">
            <dxpg:PivotGridControl.Fields>
                <dxpg:PivotGridField x:Name="fieldProduct" FieldName="ProductName" Area="RowArea" AreaIndex="1" Width="215" Caption="Product Name" />
                <dxpg:PivotGridField x:Name="fieldCategory" FieldName="CategoryName" Area="RowArea" AreaIndex="0" Width="130" Caption="Category Name" />
                <dxpg:PivotGridField x:Name="fieldQuarter" ValueFormat="Quarter {0}" FieldName="OrderDate" AreaIndex="1" Area="ColumnArea" GroupInterval="DateQuarter"
                                 Width="80" Caption="Quarter" />
                <dxpg:PivotGridField x:Name="fieldYear" FieldName="OrderDate" Area="ColumnArea" GroupInterval="DateYear" AreaIndex="0" Width="80" Caption="Year" />
                <dxpg:PivotGridField x:Name="fieldQuantity" FieldName="Quantity" SummaryType="Sum" ShowSummaryTypeName="True" AreaIndex="1" Area="DataArea"
                                 Width="70" Caption="Quantity" />
                <dxpg:PivotGridField x:Name="fieldDiscount" FieldName="Discount" SummaryType="Average" ShowSummaryTypeName="True" AreaIndex="2" Area="DataArea"
                                 Width="70" Caption="Discount" CellFormat="p" ValueFormat="p" />
                <dxpg:PivotGridField x:Name="fieldUnitPrice" FieldName="UnitPrice" SummaryType="Max" ShowSummaryTypeName="True" AreaIndex="0" Area="DataArea"
                                 Width="130" Caption="Unit Price" />
            </dxpg:PivotGridControl.Fields>
        </dxpg:PivotGridControl>
    </dxdb:DemoModuleControl>
</local:PivotGridDemoModule>!}	using System;
using System.Windows;
using DevExpress.Xpf.DemoBase;
using DevExpress.Xpf.PivotGrid;
using System.Windows.Data;
using System.Windows.Media;
using System.Windows.Markup;
using System.Windows.Controls;
using DevExpress.Data.Mask;

namespace PivotGridDemo.PivotGrid {
    public partial class SingleTotal : PivotGridDemoModule {
        public SingleTotal() {
            InitializeComponent();
            pivotGrid.BeginUpdate();
            pivotGrid.AllowCrossGroupVariation = false;
            pivotGrid.DataSource = NWindData.SalesPerson;
            fieldYear.FilterValues.FilterType = FieldFilterType.Included;
            fieldYear.FilterValues.Add(1995);
            fieldYear.FilterValues.Add(1994);
            fieldCategory.FilterValues.FilterType = FieldFilterType.Included;
            fieldCategory.FilterValues.Add("Beverages");
            fieldCategory.FilterValues.Add("Condiments");
            pivotGrid.EndUpdate();
            InitComboBoxes();
        }
        void pivotGrid_Loaded(object sender, RoutedEventArgs e) {
            pivotGrid.BestFit(FieldArea.ColumnArea, true, false);
        }
        void InitComboBoxes() {
            Array arr = EnumHelper.GetValues(typeof(FieldSummaryType));
            foreach(FieldSummaryType type in arr)
                cbSummaryType.Items.Add(type);
            foreach(PivotGridField field in pivotGrid.Fields)
                if(field.Area == FieldArea.DataArea && field.Visible) {
                    cbField.Items.Add(field.Caption);
                }
            cbField.SelectedIndex = 0;
        }
        void cbField_SelectedIndexChanged(object sender, RoutedEventArgs e) {
            foreach(PivotGridField field in pivotGrid.Fields)
                if(field.Caption == cbField.SelectedItem.ToString())
                    cbSummaryType.SelectedIndex = cbSummaryType.Items.IndexOf(field.SummaryType);
        }
        void cbSummaryType_SelectedIndexChanged(object sender, RoutedEventArgs e) {
            foreach(PivotGridField field in pivotGrid.Fields)
                if(field.Caption == cbField.SelectedItem.ToString())
                    field.SummaryType = (FieldSummaryType)cbSummaryType.SelectedItem;
        }

        void OnPivotGridCustomSummary(object sender, PivotCustomSummaryEventArgs e) {
            e.CustomValue = e.SummaryValue.Summary;
        }
    }

}!MSBAML```����IEPivotGridDemo, Version=13.1.4.0, Culture=neutral, PublicKeyToken=nullA%clr-namespace:PivotGridDemo.PivotGridPivotGridDemo.PivotGrid+%PivotGridDemo.PivotGrid.SortBySummary\XPresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNWindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35WSPresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35D9http://schemas.microsoft.com/winfx/2006/xaml/presentationRNSystem.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:x,http://schemas.microsoft.com/winfx/2006/xaml7local%clr-namespace:PivotGridDemo.PivotGridfbDevExpress.Xpf.PivotGrid.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aBdxpg7http://schemas.devexpress.com/winfx/2008/xaml/pivotgrida]DevExpress.Xpf.Core.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a?dxe5http://schemas.devexpress.com/winfx/2008/xaml/editors;dx2http://schemas.devexpress.com/winfx/2008/xaml/coreeaDevExpress.Xpf.DemoBase.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aAdxdb6http://schemas.devexpress.com/winfx/2008/xaml/demobase1+PivotGridDemo.PivotGrid.PivotGridDemoModule
Loaded$ PivotGridDemoModule_Loaded��$	�300��$	�400���	Resources
 FieldHeaderTemplate%DevExpress.Xpf.Core.SimplePanel��Padding�Path�Mode�%&	��.R�.+��$<��6/PivotGridDemo;component/Images/HeaderIcons/Person.png�$
��None=�$
�Left=�$�Center=�$�	0,-1,2,-1q���$�	textBlock��$18,0,0,0q�$�Right=����$DisplayText�$OneWay=���$ActualHeaderContentStyle�.�/)DevExpress.Xpf.DemoBase.DemoModuleControlOptionsContent����Orientation$Vertical=�.+�$DevExpress.Xpf.Core.GroupFrame$��Sorting Settings��$
�0,0,0,8q�.���$Vertical=�.+���$�Center=�#!Sort the "Sales Person" field by:)#DevExpress.Xpf.Editors.ComboBoxEdit-$
�cbField��$�Center=�$
�Stretch=�'!DevExpress.Xpf.Editors.ButtonEditIsTextEditable.$
�0,4,0,0q�Content./)DevExpress.Xpf.PivotGrid.PivotGridControl-	Name$		pivotGrid��-'PivotGridDemo.PivotGrid.FieldAreaHelper
FixAreas
.RowTreeWidth$	220�$
�Stretch=�ShowColumnHeaders.

ShowBorder
.
Fields-	'DevExpress.Xpf.PivotGrid.PivotGridField	-	Name$fieldQuarter��		FieldName$	OrderDate��	Area$
RowArea=�		AreaIndex$0�	UnboundFieldName$fieldQuarter��	
GroupInterval$	DateMonth=�	Width$	130Q�	Caption$Order Month��	-$fieldSalesPerson��$Sales Person��$
RowArea=�$1�$	130Q�$Sales Person��		SortOrder$
Descending=�	HeaderTemplate#[	HeaderListTemplate#[	SortByField��ElementName$fieldExtendedPrice��	-$fieldExtendedPrice��$Extended Price��$DataArea=�$0�$Order Amount��	
CellFormat$c��	-$	fieldYear��$	OrderDate��$0�$DateYear=�$	fieldYear��$
Order Year��	-$
fieldQuantity��$Quantity��$DataArea=�$1�$Quantity��	-$
fieldDiscount��$Discount��$DataArea=�$2�$Discount (Avg)��$p��	SummaryType$
Average=�!+<local:PivotGridDemoModule x:Class="PivotGridDemo.PivotGrid.SortBySummary"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:PivotGridDemo.PivotGrid"
    xmlns:dxpg="http://schemas.devexpress.com/winfx/2008/xaml/pivotgrid"
    xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
    xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
    xmlns:dxdb="http://schemas.devexpress.com/winfx/2008/xaml/demobase"
    Height="300" Width="400" Loaded="PivotGridDemoModule_Loaded">

    <local:PivotGridDemoModule.Resources>
        <ResourceDictionary>
            <DataTemplate x:Key="FieldHeaderTemplate">
                <dx:SimplePanel>
                    <Image Source="/PivotGridDemo;component/Images/HeaderIcons/Person.png" Stretch="None" HorizontalAlignment="Left"
                           VerticalAlignment="Center" Margin="0,-1,2,-1" />
                    <TextBlock Padding="18,0,0,0" Name="textBlock" Text="{Binding Path=DisplayText, Mode=OneWay}" HorizontalAlignment="Right"
                            Style="{Binding Path=ActualHeaderContentStyle}" />
                </dx:SimplePanel>
            </DataTemplate>
        </ResourceDictionary>
    </local:PivotGridDemoModule.Resources>

    <dxdb:DemoModuleControl>
        <dxdb:DemoModuleControl.OptionsContent>
            <StackPanel Orientation="Vertical">
                <dx:GroupFrame Header="Sorting Settings" Margin="0,0,0,8">
                    <StackPanel Orientation="Vertical">
                        <TextBlock VerticalAlignment="Center">Sort the "Sales Person" field by:</TextBlock>
                        <dxe:ComboBoxEdit Name="cbField" VerticalAlignment="Center" HorizontalAlignment="Stretch"
                                      IsTextEditable="False" Margin="0,4,0,0" SelectedIndexChanged="cbField_SelectedIndexChanged" />
                    </StackPanel>
                </dx:GroupFrame>
            </StackPanel>
        </dxdb:DemoModuleControl.OptionsContent>
        <dxpg:PivotGridControl x:Name="pivotGrid" local:FieldAreaHelper.FixAreas="True" RowTreeWidth="220"
                               VerticalAlignment="Stretch" ShowColumnHeaders="False" ShowBorder="False" Loaded="pivotGrid_Loaded">
            <dxpg:PivotGridControl.Fields>
                <dxpg:PivotGridField x:Name="fieldQuarter" FieldName="OrderDate" Area="RowArea" AreaIndex="0"
                                 UnboundFieldName="fieldQuarter" GroupInterval="DateMonth" Width="130"
                                 Caption="Order Month" />
                <dxpg:PivotGridField x:Name="fieldSalesPerson" FieldName="Sales Person" Area="RowArea" AreaIndex="1"
                                 Width="130"
                                 Caption="Sales Person" SortByField="{Binding ElementName=fieldExtendedPrice}" SortOrder="Descending"
                                 HeaderTemplate="{StaticResource ResourceKey=FieldHeaderTemplate}"
                                 HeaderListTemplate="{StaticResource ResourceKey=FieldHeaderTemplate}" />
                <dxpg:PivotGridField x:Name="fieldExtendedPrice" FieldName="Extended Price" Area="DataArea" AreaIndex="0"
                                 Caption="Order Amount" CellFormat="c" />
                <dxpg:PivotGridField x:Name="fieldYear" FieldName="OrderDate" AreaIndex="0"
                                 GroupInterval="DateYear"
                                 UnboundFieldName="fieldYear" Caption="Order Year" />
                <dxpg:PivotGridField x:Name="fieldQuantity" FieldName="Quantity" Area="DataArea" AreaIndex="1"
                                 Caption="Quantity" />
                <dxpg:PivotGridField x:Name="fieldDiscount" FieldName="Discount" Area="DataArea" AreaIndex="2"
                                 Caption="Discount (Avg)" CellFormat="p" SummaryType="Average" />
            </dxpg:PivotGridControl.Fields>
        </dxpg:PivotGridControl>
    </dxdb:DemoModuleControl>
</local:PivotGridDemoModule>!Tusing System;
using System.Windows;
using DevExpress.Xpf.DemoBase;
using DevExpress.Xpf.PivotGrid;
using DevExpress.Xpf.Editors;

namespace PivotGridDemo.PivotGrid {
    public partial class SortBySummary : PivotGridDemoModule {
        public SortBySummary() {
            InitializeComponent();
            pivotGrid.DataSource = NWindData.SalesPerson;
        }
        void PivotGridDemoModule_Loaded(object sender, RoutedEventArgs e) {
            pivotGrid.BeginUpdate();
            fieldYear.FilterValues.FilterType = FieldFilterType.Included;
            fieldYear.FilterValues.Add(1995);
            pivotGrid.EndUpdate();
        }
        void pivotGrid_Loaded(object sender, RoutedEventArgs e) {
            pivotGrid.BestFit(FieldArea.ColumnArea, true, false);
            InitComboBoxes();
        }
        void InitComboBoxes() {
            foreach(PivotGridField field in pivotGrid.Fields)
                if(field.Area == FieldArea.DataArea) {
                    cbField.Items.Add(new ComboBoxEditItem() { Content = field.Caption.ToString(), Tag = field });
                    if(object.ReferenceEquals(field, fieldSalesPerson.SortByField))
                        cbField.SelectedItem = cbField.Items[cbField.Items.Count - 1];
                }
            cbField.SelectedIndex = 0;
        }
        void cbField_SelectedIndexChanged(object sender, RoutedEventArgs e) {
            if(cbField.SelectedIndex < 0)
                return;
            fieldSalesPerson.SortByField = (PivotGridField)((ComboBoxEditItem)cbField.SelectedItem).Tag;
        }
    }
}!�MSBAML```����IEPivotGridDemo, Version=13.1.4.0, Culture=neutral, PublicKeyToken=nullA%clr-namespace:PivotGridDemo.PivotGridPivotGridDemo.PivotGrid0*PivotGridDemo.PivotGrid.SummaryDisplayMode\XPresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNWindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35WSPresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35D9http://schemas.microsoft.com/winfx/2006/xaml/presentationRNSystem.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:x,http://schemas.microsoft.com/winfx/2006/xaml7local%clr-namespace:PivotGridDemo.PivotGridfbDevExpress.Xpf.PivotGrid.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aBdxpg7http://schemas.devexpress.com/winfx/2008/xaml/pivotgrida]DevExpress.Xpf.Core.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a?dxe5http://schemas.devexpress.com/winfx/2008/xaml/editors;dx2http://schemas.devexpress.com/winfx/2008/xaml/coreeaDevExpress.Xpf.DemoBase.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aAdxdb6http://schemas.devexpress.com/winfx/2008/xaml/demobase$	�300��$	�300��.�/)DevExpress.Xpf.DemoBase.DemoModuleControlOptionsContent����Orientation$Vertical=�.+�$DevExpress.Xpf.Core.GroupFrame$��Variation Options��$
�0,0,0,8q�.���$Vertical=�.+�& DevExpress.Xpf.Editors.CheckEdit-$#�checkAllowCrossGroupVariation��$
�0,0,0,8q�$�Center=�$
�Left=�Content)#DevExpress.Xpf.Core.ObjectConverter$!Allow cross-group variation-$"�checkHideEmptyVariationItems��$�Center=�$
�Left=�$ Hide empty variation items$��Summary Display Type��$
�Stretch=�.�)#DevExpress.Xpf.Editors.ComboBoxEdit-$�cbSummaryDisplayType��$�Center=�$
�Stretch=�'!DevExpress.Xpf.Editors.ButtonEditIsTextEditable.Content./)DevExpress.Xpf.PivotGrid.PivotGridControl-Name$	pivotGrid��-'PivotGridDemo.PivotGrid.FieldAreaHelperFixAreas.RowTreeWidth$	130�$
�Stretch=�
ShowBorder.
	Fields	-	'DevExpress.Xpf.PivotGrid.PivotGridField	-
	Name$

fieldCategory��		FieldName$CategoryName��	Area$
ColumnArea=�
		AreaIndex$
0�	Width$	130Q�	Caption$Category��	-$
	fieldDate��$	OrderDate��$
ColumnArea=�$
1�	
GroupInterval$	DateMonth=�$80Q�$Month��	-$
fieldSalesPerson��$Sales Person��$
RowArea=�$
0�$	130Q�$Sales Person��	-$

fieldQuantity��$Quantity��$DataArea=�$
0�$70Q�$	Qty��	-	$
fieldQuantity1��$Quantity��$DataArea=�$
1�$80Q�	SummaryDisplayType$AbsoluteVariation=�$	Qty��!�
<local:PivotGridDemoModule x:Class="PivotGridDemo.PivotGrid.SummaryDisplayMode"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:PivotGridDemo.PivotGrid"
    xmlns:dxpg="http://schemas.devexpress.com/winfx/2008/xaml/pivotgrid"
    xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
    xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
    xmlns:dxdb="http://schemas.devexpress.com/winfx/2008/xaml/demobase"
    Height="300" Width="300">

    <dxdb:DemoModuleControl>
        <dxdb:DemoModuleControl.OptionsContent>
            <StackPanel Orientation="Vertical">
                <dx:GroupFrame Header="Variation Options" Margin="0,0,0,8">
                    <StackPanel Orientation="Vertical">
                        <dxe:CheckEdit Name="checkAllowCrossGroupVariation" Margin="0,0,0,8"
                                   VerticalAlignment="Center" HorizontalAlignment="Left"
                                   Content="Allow cross-group variation"
                                   Checked="checkAllowCrossGroupVariation_Checked"
                                   Unchecked="checkAllowCrossGroupVariation_Unchecked" />
                        <dxe:CheckEdit Name="checkHideEmptyVariationItems"
                                   VerticalAlignment="Center" HorizontalAlignment="Left"
                                   Content="Hide empty variation items"
                                   Checked="checkHideEmptyVariationItems_Checked"
                                   Unchecked="checkHideEmptyVariationItems_Unchecked" />
                    </StackPanel>
                </dx:GroupFrame>
                <dx:GroupFrame Header="Summary Display Type" VerticalAlignment="Stretch">
                    <dxe:ComboBoxEdit Name="cbSummaryDisplayType" VerticalAlignment="Center" HorizontalAlignment="Stretch"
                                  IsTextEditable="False" SelectedIndexChanged="cbSummaryDisplayType_SelectedIndexChanged" />
                </dx:GroupFrame>
            </StackPanel>
        </dxdb:DemoModuleControl.OptionsContent>

        <dxpg:PivotGridControl x:Name="pivotGrid" local:FieldAreaHelper.FixAreas="True" RowTreeWidth="130"
                VerticalAlignment="Stretch" CustomCellAppearance="OnCustomAppearance" ShowBorder="False">
            <dxpg:PivotGridControl.Fields>
                <dxpg:PivotGridField x:Name="fieldCategory" FieldName="CategoryName" Area="ColumnArea" AreaIndex="0" Width="130" Caption="Category" />
                <dxpg:PivotGridField x:Name="fieldDate" FieldName="OrderDate" Area="ColumnArea" AreaIndex="1" GroupInterval="DateMonth" Width="80" Caption="Month" />
                <dxpg:PivotGridField x:Name="fieldSalesPerson" FieldName="Sales Person" Area="RowArea" AreaIndex="0" Width="130" Caption="Sales Person" />
                <dxpg:PivotGridField x:Name="fieldQuantity" FieldName="Quantity" Area="DataArea" AreaIndex="0" Width="70"
                                 Caption="Qty" />
                <dxpg:PivotGridField x:Name="fieldQuantity1" FieldName="Quantity" Area="DataArea" AreaIndex="1" Width="80"
                                 SummaryDisplayType="AbsoluteVariation" Caption="Qty" />
            </dxpg:PivotGridControl.Fields>
        </dxpg:PivotGridControl>
    </dxdb:DemoModuleControl>
</local:PivotGridDemoModule>!�using System;
using System.Windows;
using DevExpress.Xpf.DemoBase;
using DevExpress.Xpf.PivotGrid;
using System.Windows.Data;
using System.Windows.Media;
using System.Windows.Markup;
using System.Windows.Controls;
using DevExpress.Data.Mask;

namespace PivotGridDemo.PivotGrid {
    public partial class SummaryDisplayMode : PivotGridDemoModule {
        static SummaryDisplayMode() {
            Type ownerType = typeof(SummaryDisplayMode);
        }
        public SummaryDisplayMode() {
            InitializeComponent();
            InitComboBox();
            pivotGrid.AllowCrossGroupVariation = false;
            pivotGrid.DataSource = NWindData.SalesPerson;
        }
        void InitComboBox() {
            Array arr = EnumHelper.GetValues(typeof(FieldSummaryDisplayType));
            foreach(FieldSummaryDisplayType type in arr)
                cbSummaryDisplayType.Items.Add(type.ToString());
            cbSummaryDisplayType.SelectedIndex = 1;
        }
        private void checkAllowCrossGroupVariation_Checked(object sender, RoutedEventArgs e) {
            pivotGrid.AllowCrossGroupVariation = true;
        }
        private void checkAllowCrossGroupVariation_Unchecked(object sender, RoutedEventArgs e) {
            pivotGrid.AllowCrossGroupVariation = false;
        }
        private void checkHideEmptyVariationItems_Checked(object sender, RoutedEventArgs e) {
            fieldQuantity1.HideEmptyVariationItems = true;
        }
        private void checkHideEmptyVariationItems_Unchecked(object sender, RoutedEventArgs e) {
            fieldQuantity1.HideEmptyVariationItems = false;
        }
        private void cbSummaryDisplayType_SelectedIndexChanged(object sender, RoutedEventArgs e) {
            string value = cbSummaryDisplayType.SelectedItem.ToString();
            fieldQuantity1.SummaryDisplayType = (FieldSummaryDisplayType)Enum.Parse(typeof(FieldSummaryDisplayType), value, false);
            fieldQuantity1.Caption = FieldVariationCaption(fieldQuantity1.SummaryDisplayType);
        }

        void OnCustomAppearance(object sender, PivotCustomCellAppearanceEventArgs e) {
            if(!(e.Value is decimal)) return;
            if(e.DataField.Equals(fieldQuantity1)) {
                if((decimal)e.Value >= 0)
                    e.Foreground = new SolidColorBrush(Colors.Blue);
                else
                    e.Foreground = new SolidColorBrush(Colors.Red);
            }
        }
        string FieldVariationCaption(FieldSummaryDisplayType displayType) {
            switch(displayType){
                case FieldSummaryDisplayType.AbsoluteVariation:
                    return "Qty (Var)";
                case FieldSummaryDisplayType.PercentVariation:
                case FieldSummaryDisplayType.PercentOfColumn:
                case FieldSummaryDisplayType.PercentOfColumnGrandTotal:
                case FieldSummaryDisplayType.PercentOfGrandTotal:
                case FieldSummaryDisplayType.PercentOfRow:
                case FieldSummaryDisplayType.PercentOfRowGrandTotal:
                    return "Qty (%)";
                case FieldSummaryDisplayType.RankInColumnLargestToSmallest:
                case FieldSummaryDisplayType.RankInColumnSmallestToLargest:
                case FieldSummaryDisplayType.RankInRowLargestToSmallest:
                case FieldSummaryDisplayType.RankInRowSmallestToLargest:
                    return "Qty (Rank)";
                case FieldSummaryDisplayType.Index:
                    return "Qty (Index)";
                case FieldSummaryDisplayType.Default:
                default:
                    return "Qty";
            }
        }
    }
}!cMSBAML```����IEPivotGridDemo, Version=13.1.4.0, Culture=neutral, PublicKeyToken=nullA%clr-namespace:PivotGridDemo.PivotGridPivotGridDemo.PivotGrid'!PivotGridDemo.PivotGrid.TopValues\XPresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNWindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35WSPresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35D9http://schemas.microsoft.com/winfx/2006/xaml/presentationRNSystem.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:x,http://schemas.microsoft.com/winfx/2006/xaml7local%clr-namespace:PivotGridDemo.PivotGridfbDevExpress.Xpf.PivotGrid.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aBdxpg7http://schemas.devexpress.com/winfx/2008/xaml/pivotgrida]DevExpress.Xpf.Core.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a?dxe5http://schemas.devexpress.com/winfx/2008/xaml/editors;dx2http://schemas.devexpress.com/winfx/2008/xaml/coreeaDevExpress.Xpf.DemoBase.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aAdxdb6http://schemas.devexpress.com/winfx/2008/xaml/demobase$	�300��$	�300��.�/)DevExpress.Xpf.DemoBase.DemoModuleControlOptionsContent����Orientation$Vertical=�.+�$DevExpress.Xpf.Core.GroupFrame$��Set Top Values��$
�Stretch=�.���$Vertical=�.+���$
Horizontal=�.+���$
�0,0,7,0q�$�Center=�$�LeftToRight=�
Show top%DevExpress.Xpf.Editors.SpinEdit-$�seTopValuesCount��$�LeftToRight=�Value$5~�MinValue$1X�MaxValue$30X�%DevExpress.Xpf.Editors.TextEditMask$	N00��$	�Top=�$�60����$��values for the field:��$
�0,5,0,5q�$
�Left=�)#DevExpress.Xpf.Editors.ComboBoxEdit-$
�cbField��$	�120��$
�Left=�'!DevExpress.Xpf.Editors.ButtonEditIsTextEditable.& DevExpress.Xpf.Editors.CheckEdit-$�checkTopValueShowOthers��$�25��Content)#DevExpress.Xpf.Core.ObjectConverter$Show Others Value$�0,10,0,0q�Content./	)DevExpress.Xpf.PivotGrid.PivotGridControl	-		Name$		pivotGrid��-
'PivotGridDemo.PivotGrid.FieldAreaHelper

FixAreas
.$
�Stretch=�	
ShowBorder.	RowTreeWidth$	200�

	Fields
-'DevExpress.Xpf.PivotGrid.PivotGridField-Name$fieldOrderID��	FieldName$
OrderID��Area$
RowArea=�	AreaIndex$0�Caption$Order ID��-$fieldExtendedPrice��$Extended Price��$DataArea=�$0�$Order Amount��Width$	120Q�-$fieldCategoryName��$CategoryName��$
RowArea=�$1�$
Category Name��$	160Q�-$fieldSalesPerson��$Sales Person��$
RowArea=�$2�$Sales Person��$	140Q�-	$fieldProductName��$ProductName��$
RowArea=�$3�$Product Name��$	180Q�!<local:PivotGridDemoModule x:Class="PivotGridDemo.PivotGrid.TopValues"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:PivotGridDemo.PivotGrid"
    xmlns:dxpg="http://schemas.devexpress.com/winfx/2008/xaml/pivotgrid"
    xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
    xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
    xmlns:dxdb="http://schemas.devexpress.com/winfx/2008/xaml/demobase"
    Height="300" Width="300">
    <dxdb:DemoModuleControl>
        <dxdb:DemoModuleControl.OptionsContent>
            <StackPanel Orientation="Vertical">
                <dx:GroupFrame Header="Set Top Values" VerticalAlignment="Stretch">
                    <StackPanel Orientation="Vertical">
                        <StackPanel Orientation="Horizontal">
                            <TextBlock Margin="0,0,7,0" VerticalAlignment="Center" FlowDirection="LeftToRight">Show top</TextBlock>
                            <dxe:SpinEdit Name="seTopValuesCount" FlowDirection="LeftToRight" Value="5" MinValue="1" MaxValue="30" Mask="N00" VerticalAlignment="Top" EditValueChanged="seTopValuesCount_EditValueChanged" Width="60" />
                        </StackPanel>
                        <TextBlock Text="values for the field:" Margin="0,5,0,5" HorizontalAlignment="Left" />
                        <dxe:ComboBoxEdit Name="cbField" Width="120" HorizontalAlignment="Left" SelectedIndexChanged="cbField_SelectedIndexChanged" IsTextEditable="False" />
                        <dxe:CheckEdit Name="checkTopValueShowOthers" Height="25" Content="Show Others Value" Checked="checkTopValueShowOthers_Checked" Unchecked="checkTopValueShowOthers_Unchecked" Margin="0,10,0,0" />
                    </StackPanel>
                </dx:GroupFrame>
            </StackPanel>
        </dxdb:DemoModuleControl.OptionsContent>
        <dxpg:PivotGridControl x:Name="pivotGrid" local:FieldAreaHelper.FixAreas="True" VerticalAlignment="Stretch" ShowBorder="False" Loaded="pivotGrid_Loaded" RowTreeWidth="200">
            <dxpg:PivotGridControl.Fields>
                <dxpg:PivotGridField x:Name="fieldOrderID" FieldName="OrderID" Area="RowArea" AreaIndex="0" Caption="Order ID" />
                <dxpg:PivotGridField x:Name="fieldExtendedPrice" FieldName="Extended Price" Area="DataArea" AreaIndex="0" Caption="Order Amount" Width="120" />
                <dxpg:PivotGridField x:Name="fieldCategoryName" FieldName="CategoryName" Area="RowArea" AreaIndex="1" Caption="Category Name" Width="160" />
                <dxpg:PivotGridField x:Name="fieldSalesPerson" FieldName="Sales Person" Area="RowArea" AreaIndex="2" Caption="Sales Person" Width="140" />
                <dxpg:PivotGridField x:Name="fieldProductName" FieldName="ProductName" Area="RowArea" AreaIndex="3" Caption="Product Name" Width="180" />
            </dxpg:PivotGridControl.Fields>
        </dxpg:PivotGridControl>
    </dxdb:DemoModuleControl>
</local:PivotGridDemoModule>!�
using System;
using System.Windows;
using DevExpress.Xpf.DemoBase;
using DevExpress.Xpf.PivotGrid;

namespace PivotGridDemo.PivotGrid {
    public partial class TopValues : PivotGridDemoModule {
        static TopValues() {
            Type ownerType = typeof(TopValues);
        }
        public TopValues() {
            InitializeComponent();
            pivotGrid.DataSource = NWindData.SalesPerson;
            InitComboBoxes();
            cbField.SelectedIndex = cbField.Items.Count - 1;
        }
        void pivotGrid_Loaded(object sender, RoutedEventArgs e) {
            pivotGrid.BestFit(true, false);
        }
        void InitComboBoxes() {
            foreach(PivotGridField field in pivotGrid.Fields) {
                if(field.Area == FieldArea.RowArea || field.Area == FieldArea.ColumnArea)
                    cbField.Items.Add(field.Caption);
            }
        }
        void checkTopValueShowOthers_Checked(object sender, RoutedEventArgs e) {
            SetFieldTop();
        }
        void checkTopValueShowOthers_Unchecked(object sender, RoutedEventArgs e) {
            SetFieldTop();
        }
        void cbField_SelectedIndexChanged(object sender, RoutedEventArgs e) {
            SetFieldTop();
            HideRowAreaFields();
        }
        void seTopValuesCount_EditValueChanged(object sender, DevExpress.Xpf.Editors.EditValueChangedEventArgs e) {
            SetFieldTop();
            pivotGrid.BestFit(true, false);
        }
        void SetFieldTop() {
            if(pivotGrid == null) return;
            pivotGrid.BeginUpdate();
            foreach(PivotGridField field in pivotGrid.Fields) {
                if(field.Caption == cbField.SelectedItem.ToString()) {
                    field.Visible = true;
                    field.SortOrder = FieldSortOrder.Descending;
                    field.SortByField = fieldExtendedPrice;
                    field.TopValueCount = Convert.ToInt32(seTopValuesCount.Value);
                    field.TopValueShowOthers = checkTopValueShowOthers.IsChecked.Value;
                } else {
                    field.TopValueCount = 0;
                }
            }
            pivotGrid.EndUpdate();
        }

        void HideRowAreaFields() {
            if(pivotGrid == null) return;
            pivotGrid.BeginUpdate();
            foreach(PivotGridField field in pivotGrid.Fields) {
                if(field.Caption == cbField.SelectedItem.ToString()) {
                } else {
                    if(field.Area == FieldArea.ColumnArea || field.Area == FieldArea.RowArea)
                        field.Visible = false;
                }
            }
            pivotGrid.EndUpdate();
        }
    }
}!�MSBAML```����IEPivotGridDemo, Version=13.1.4.0, Culture=neutral, PublicKeyToken=nullA%clr-namespace:PivotGridDemo.PivotGridPivotGridDemo.PivotGrid,&PivotGridDemo.PivotGrid.TotalsLocation\XPresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNWindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35WSPresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35D9http://schemas.microsoft.com/winfx/2006/xaml/presentationRNSystem.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:x,http://schemas.microsoft.com/winfx/2006/xaml7local%clr-namespace:PivotGridDemo.PivotGridfbDevExpress.Xpf.PivotGrid.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aBdxpg7http://schemas.devexpress.com/winfx/2008/xaml/pivotgrida]DevExpress.Xpf.Core.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a?dxe5http://schemas.devexpress.com/winfx/2008/xaml/editors;dx2http://schemas.devexpress.com/winfx/2008/xaml/coreeaDevExpress.Xpf.DemoBase.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aAdxdb6http://schemas.devexpress.com/winfx/2008/xaml/demobase$	�300��$	�300��.�/)DevExpress.Xpf.DemoBase.DemoModuleControlOptionsContent����Orientation$Vertical=�$	�290��.+�$DevExpress.Xpf.Core.GroupFrame$��Totals Location��$
�0,0,0,8q�.���RowDefinitions�$��*��$��*��ColumnDefinitions��$�*���$�*�.+���$��0�$�0�$�Center=�$
�0,0,4,4q�Column Totals Location:)#DevExpress.Xpf.Editors.ComboBoxEdit-$�cbColumnTotalsLocation��$��0�$�1�$�Center=�$
�Stretch=�'!DevExpress.Xpf.Editors.ButtonEditIsTextEditable.$
�0,0,0,4q�+%DevExpress.Xpf.Editors.LookUpEditBaseSelectedItem��ElementName$	pivotGrid���Path$ColumnTotalsLocation��Mode$TwoWay=���$��1�$�0�$�Center=�Row Totals Location:-$�cbRowTotalsLocation��$��1�$�1�$�Center=�$
�Stretch=�.�$	pivotGrid��$RowTotalsLocation�$TwoWay=�	Content.	/)DevExpress.Xpf.PivotGrid.PivotGridControl-
Name$
	pivotGrid��-'PivotGridDemo.PivotGrid.FieldAreaHelperFixAreas.RowTreeWidth$	215�$
�Stretch=�

ShowBorder
.
Fields-'DevExpress.Xpf.PivotGrid.PivotGridField-Name$
fieldCategory��	FieldName$CategoryName��Area$
RowArea=�	AreaIndex$1�Width$	130Q�Caption$Category��-$	fieldYear��$	OrderDate��$
ColumnArea=�$0�
GroupInterval$DateYear=�$80Q�$
Year��-$fieldQuarter��$	OrderDate��$
ColumnArea=�$1�$DateQuarter=�$80Q�$
Quarter��-$fieldSalesPerson��$Sales Person��$
RowArea=�$0�$	130Q�$Sales Person��-$
fieldQuantity��$Quantity��$DataArea=�$0�$70Q�$Quantity��!�
<local:PivotGridDemoModule x:Class="PivotGridDemo.PivotGrid.TotalsLocation"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:PivotGridDemo.PivotGrid"
    xmlns:dxpg="http://schemas.devexpress.com/winfx/2008/xaml/pivotgrid"
    xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
    xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
    xmlns:dxdb="http://schemas.devexpress.com/winfx/2008/xaml/demobase"
    Height="300" Width="300">

    <dxdb:DemoModuleControl>
        <dxdb:DemoModuleControl.OptionsContent>
            <StackPanel Orientation="Vertical" Width="290">
                <dx:GroupFrame Header="Totals Location" Margin="0,0,0,8">
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="*" />
                            <RowDefinition Height="*" />
                        </Grid.RowDefinitions>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="*" />
                            <ColumnDefinition Width="*" />
                        </Grid.ColumnDefinitions>
                        <TextBlock Grid.Row="0" Grid.Column="0" VerticalAlignment="Center" Margin="0,0,4,4">Column Totals Location:</TextBlock>
                        <dxe:ComboBoxEdit Grid.Row="0" Grid.Column="1" Name="cbColumnTotalsLocation" VerticalAlignment="Center" HorizontalAlignment="Stretch"
                                  IsTextEditable="False" SelectedItem="{Binding ElementName=pivotGrid, Path=ColumnTotalsLocation, Mode=TwoWay}"
                                  Margin="0,0,0,4" />
                        <TextBlock Grid.Row="1" Grid.Column="0" VerticalAlignment="Center">Row Totals Location:</TextBlock>
                        <dxe:ComboBoxEdit Grid.Row="1" Grid.Column="1" Name="cbRowTotalsLocation" VerticalAlignment="Center" HorizontalAlignment="Stretch"
                                  IsTextEditable="False" SelectedItem="{Binding ElementName=pivotGrid, Path=RowTotalsLocation, Mode=TwoWay}" />
                    </Grid>
                </dx:GroupFrame>
            </StackPanel>
        </dxdb:DemoModuleControl.OptionsContent>

        <dxpg:PivotGridControl x:Name="pivotGrid" local:FieldAreaHelper.FixAreas="True"
                               RowTreeWidth="215" VerticalAlignment="Stretch" ShowBorder="False">
            <dxpg:PivotGridControl.Fields>
                <dxpg:PivotGridField x:Name="fieldCategory" FieldName="CategoryName" Area="RowArea" AreaIndex="1" Width="130" Caption="Category" />
                <dxpg:PivotGridField x:Name="fieldYear" FieldName="OrderDate" Area="ColumnArea" AreaIndex="0" GroupInterval="DateYear" Width="80" Caption="Year" />
                <dxpg:PivotGridField x:Name="fieldQuarter" FieldName="OrderDate" Area="ColumnArea" AreaIndex="1" GroupInterval="DateQuarter" Width="80" Caption="Quarter" />
                <dxpg:PivotGridField x:Name="fieldSalesPerson" FieldName="Sales Person" Area="RowArea" AreaIndex="0" Width="130" Caption="Sales Person" />
                <dxpg:PivotGridField x:Name="fieldQuantity" FieldName="Quantity" Area="DataArea" AreaIndex="0" Width="70" Caption="Quantity" />
            </dxpg:PivotGridControl.Fields>
        </dxpg:PivotGridControl>
    </dxdb:DemoModuleControl>
</local:PivotGridDemoModule>!�using System;
using DevExpress.Xpf.DemoBase;
using DevExpress.Xpf.PivotGrid;
using DevExpress.Data.Mask;

namespace PivotGridDemo.PivotGrid {
    public partial class TotalsLocation : PivotGridDemoModule {
        static TotalsLocation() {
            Type ownerType = typeof(TotalsLocation);
        }
        public TotalsLocation() {
            InitializeComponent();
            InitComboBoxes();
            pivotGrid.DataSource = NWindData.SalesPerson;
        }
        void InitComboBoxes() {
            Array arr = EnumHelper.GetValues(typeof(FieldColumnTotalsLocation));
            foreach(FieldColumnTotalsLocation type in arr)
                cbColumnTotalsLocation.Items.Add(type);
            arr = EnumHelper.GetValues(typeof(FieldRowTotalsLocation));
            foreach(FieldRowTotalsLocation type in arr)
                cbRowTotalsLocation.Items.Add(type);
        }
    }
}!|MSBAML```����IEPivotGridDemo, Version=13.1.4.0, Culture=neutral, PublicKeyToken=nullA%clr-namespace:PivotGridDemo.PivotGridPivotGridDemo.PivotGrid0*PivotGridDemo.PivotGrid.UnboundExpressions\XPresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNWindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35WSPresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35D9http://schemas.microsoft.com/winfx/2006/xaml/presentationRNSystem.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:x,http://schemas.microsoft.com/winfx/2006/xaml7local%clr-namespace:PivotGridDemo.PivotGridfbDevExpress.Xpf.PivotGrid.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aBdxpg7http://schemas.devexpress.com/winfx/2008/xaml/pivotgrida]DevExpress.Xpf.Core.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a?dxe5http://schemas.devexpress.com/winfx/2008/xaml/editors;dx2http://schemas.devexpress.com/winfx/2008/xaml/core<dxb2http://schemas.devexpress.com/winfx/2008/xaml/barseaDevExpress.Xpf.DemoBase.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49aAdxdb6http://schemas.devexpress.com/winfx/2008/xaml/demobase$	�400��$	�500���	Resources
 FieldHeaderTemplate%DevExpress.Xpf.Core.SimplePanel��Padding�Path�Mode UnboundFieldTemplate�	ClickMode��
TargetType��Orientation'!System.Windows.VisualStateManagerVisualStateGroups%System.Windows.VisualStateGroup
States System.Windows.VisualState	
Storyboard
g�	BeginTime��
TargetName��TargetProperty
R�KeyTimeR�Value�%U&	&	��.R�.+��$<��6/PivotGridDemo;component/Images/HeaderIcons/Person.png�$
��None=�$
�Left=�$�Center=�$�	0,-1,2,-1q���$�	textBlock��$18,0,0,0q�$�Right=����$DisplayText�$OneWay=���$ActualHeaderContentStyle���.R��-$Press=����"�.R���$
Horizontal=�CommonStates��.
Normal��
	MouseOver��.	��.��T�$
00:00:00X�$	PART_Link��$	FontStyle�..�i�$
00:00:00��%�
Italic$�T�$
00:00:00X�$	PART_Link��$Cursor�..�i�$
00:00:00����Hand��T�$
00:00:00X�$	PART_Link��$
Foreground�..�i�$
00:00:00����Red�.+���$�	PART_Link��$�Center=�$	4,2q�$��CharacterEllipsis=����$
Foreground�$OneWay=����$DisplayText�$OneWay=�.�/)DevExpress.Xpf.DemoBase.DemoModuleControlOptionsContent��$Vertical=�$	�314��.+�$DevExpress.Xpf.Core.GroupFrame$$��Field Value Format Expressions��$
�0,0,0,8q�.���$
Horizontal=�.+���$�0�$��0�$�Center=�Sales Person Format:)#DevExpress.Xpf.Editors.ComboBoxEdit-$�
cbSalesPerson��$�1�$��0�$�Center=�$
�Stretch=�$	�155��'!DevExpress.Xpf.Editors.ButtonEditIsTextEditable.$�10,4,0,0q�$�1�Items.-	'DevExpress.Xpf.Editors.ComboBoxEditItem	$�First Name + Last Name��
�Tag$.([fieldFirstName] + ' ' + [fieldLastName]��	$�Last Name + First Name��$.([fieldLastName] + ' ' + [fieldFirstName]��	$�Last Name only��$[fieldLastName]��$&�� Add New Summary Expression Bonus��$
�0,0,0,8q�.���RowDefinitions�$��*��$��*��ColumnDefinitions��$
�Auto���$
�Auto���$�*�.+���$�Center=�
Bonus Name:%
DevExpress.Xpf.Editors.TextEdit
-$�teBonusName��$�1�$�2�$�Center=�$�25��$�75��$
�4,4,4,4q��-$�btnAddField��$�2�{�.$
�4,4,0,4q�$�3�$�70��$�25��$�Center=�$�Right=�$�	Add Bonus����$�0�$��1�$�Center=�Internal Expression:-$�beExpression��$�1�$��1�$�2�%DevExpress.Xpf.Editors.BaseEdit
IsReadOnly.$�4�$�Center=�$
�Stretch=�$
�4,4,0,0q�$�25��{���ElementName$btnAddField��$	IsEnabled�Content./)DevExpress.Xpf.PivotGrid.PivotGridControl-Name$	pivotGrid��RowTreeWidth$	180�ShowColumnHeaders.ShowDataHeaders.
ShowBorder.ShowFilterHeaders.ShowRowGrandTotals.$
�Stretch=�
ShowRowTotals. RowTotalsLocation$
 Near=�!AllowExpand!."AllowExpandOnDoubleClick".%#DataFieldUnboundExpressionMode$#UseSummaryValues=�
$Fields$-
'DevExpress.Xpf.PivotGrid.PivotGridField
-%
Name$%fieldFirstName��&
	FieldName$&	FirstName��'
	AreaIndex$'0�(
Visible(.
-$%
fieldLastName��$&LastName��$'0�(.
-	$%fieldSalesPerson��)
UnboundFieldName$)fSalesPerson��*
UnboundType$*String=�+
Area$
+RowArea=�$'0�,
AllowedAreas$
,RowArea=�-
Width$	-220Q�.
Caption$.Sales Person��/

ValueTemplate#/[0
HeaderTemplate#0[1
HeaderListTemplate#1[2
UnboundExpression2�$
cbSalesPerson��$SelectedItem.Tag�
-
$%fieldQuarter��$&	OrderDate��$
)Quarter��$
+RowArea=�$'1�$
,RowArea=�3

GroupInterval$3DateQuarter=�$	-140Q�$
.Quarter��4
ValueFormat$
4Qtr {0}��
-$%fieldExtendedPrice��$&Extended Price��$+DataArea=�$'2�$,DataArea=�$.Extended Price��
-$%
fieldQuantity��$&Quantity��$+DataArea=�$'1�$,DataArea=�$.Quantity��
-
$%fieldOrderCount��$
&OrderID��$+DataArea=�$'0�$,DataArea=�$.Order Count��5
SummaryType$5Count=�
-$%fieldNewYearBonus��$)NewYearBonus��$
*Decimal=�$N2HIif([fieldQuarter] == 4, Iif([fieldExtendedPrice] > 40000, 600, 400), 0)��$+DataArea=�$'3�$,DataArea=�$.New Year Bonus��#/[
-$%fieldOrderCountBonus��$)OrderCountBonus��$
*Decimal=�$�2Iif([fieldOrderCount] > 50 and [fieldExtendedPrice] / [fieldOrderCount] > 500, 15 * [fieldExtendedPrice] / [fieldQuantity] , 0)��$+DataArea=�$'4�$,DataArea=�$.Order Count Bonus��#/[#6FieldValueMenuCustomizations6.(DevExpress.Xpf.Bars.BarItemLinkSeparator'!DevExpress.Xpf.Bars.BarButtonItem-7�Name$7removeBonus��!DevExpress.Xpf.Bars.BarItem8Content)#DevExpress.Xpf.Core.ObjectConverter$8Remove this Bonus
9�Tag9�$60(dxpg:PivotGridPopupMenu.GridMenuInfo).ValueItem�:�RelativeSource:��*Self+;	IsVisible;�$60(dxpg:PivotGridPopupMenu.GridMenuInfo).ValueItem�:��*Self+<�	Converter<>8PivotGridDemo.PivotGrid.FieldValueItemToBooleanConverter!�0<local:PivotGridDemoModule x:Class="PivotGridDemo.PivotGrid.UnboundExpressions"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:PivotGridDemo.PivotGrid"
        xmlns:dxpg="http://schemas.devexpress.com/winfx/2008/xaml/pivotgrid"
        xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
        xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
        xmlns:dxb="http://schemas.devexpress.com/winfx/2008/xaml/bars"
        xmlns:dxdb="http://schemas.devexpress.com/winfx/2008/xaml/demobase"
        Height="400" Width="500">
    <local:PivotGridDemoModule.Resources>
        <ResourceDictionary>
            <DataTemplate x:Key="FieldHeaderTemplate">
                <dx:SimplePanel>
                    <Image Source="/PivotGridDemo;component/Images/HeaderIcons/Person.png" Stretch="None" HorizontalAlignment="Left"
                           VerticalAlignment="Center" Margin="0,-1,2,-1" />
                    <TextBlock Name="textBlock" Padding="18,0,0,0" Text="{Binding Path=DisplayText, Mode=OneWay}" HorizontalAlignment="Right"
                                Style="{Binding Path=ActualHeaderContentStyle}" />
                </dx:SimplePanel>
            </DataTemplate>
            <DataTemplate x:Key="UnboundFieldTemplate">
                <Button Click="Button_Click" ClickMode="Press">
                    <Button.Template>
                        <ControlTemplate TargetType="Button">
                            <StackPanel Orientation="Horizontal">
                                <VisualStateManager.VisualStateGroups>
                                    <VisualStateGroup x:Name="CommonStates">
                                        <VisualState x:Name="Normal" />
                                        <VisualState x:Name="MouseOver" >
                                            <Storyboard>
                                                <ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="PART_Link" Storyboard.TargetProperty="FontStyle">
                                                    <DiscreteObjectKeyFrame KeyTime="00:00:00">
                                                        <DiscreteObjectKeyFrame.Value>
                                                            <FontStyle>Italic</FontStyle>
                                                        </DiscreteObjectKeyFrame.Value>
                                                    </DiscreteObjectKeyFrame>
                                                </ObjectAnimationUsingKeyFrames>
                                                <ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="PART_Link" Storyboard.TargetProperty="Cursor">
                                                    <DiscreteObjectKeyFrame KeyTime="00:00:00">
                                                        <DiscreteObjectKeyFrame.Value>
                                                            <Cursor>Hand</Cursor>
                                                        </DiscreteObjectKeyFrame.Value>
                                                    </DiscreteObjectKeyFrame>
                                                </ObjectAnimationUsingKeyFrames>
                                                <ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="PART_Link" Storyboard.TargetProperty="Foreground">
                                                    <DiscreteObjectKeyFrame KeyTime="00:00:00">
                                                        <DiscreteObjectKeyFrame.Value>
                                                            <SolidColorBrush>Red</SolidColorBrush>
                                                        </DiscreteObjectKeyFrame.Value>
                                                    </DiscreteObjectKeyFrame>
                                                </ObjectAnimationUsingKeyFrames>
                                            </Storyboard>
                                        </VisualState>
                                    </VisualStateGroup>
                                </VisualStateManager.VisualStateGroups>
                                <TextBlock Name="PART_Link" VerticalAlignment="Center" Foreground="{Binding Path=Foreground, Mode=OneWay}" Padding="4,2"
                                          TextTrimming="CharacterEllipsis" Text="{Binding Path=DisplayText, Mode=OneWay}" >
                                </TextBlock>
                            </StackPanel>
                        </ControlTemplate>
                    </Button.Template>
                </Button>
            </DataTemplate>
        </ResourceDictionary>
    </local:PivotGridDemoModule.Resources>
    <dxdb:DemoModuleControl>
        <dxdb:DemoModuleControl.OptionsContent>
            <StackPanel Orientation="Vertical" Width="314">
                <dx:GroupFrame Header="Field Value Format Expressions" Margin="0,0,0,8">
                    <StackPanel Orientation="Horizontal">
                        <TextBlock Grid.Column="0" Grid.Row="0" VerticalAlignment="Center">Sales Person Format:</TextBlock>
                        <dxe:ComboBoxEdit Name="cbSalesPerson" Grid.Column="1" Grid.Row="0" VerticalAlignment="Center" HorizontalAlignment="Stretch" Width="155"
                                      IsTextEditable="False" Margin="10,4,0,0" TabIndex="1">
                            <dxe:ComboBoxEditItem Content="First Name + Last Name" Tag="[fieldFirstName] + ' ' + [fieldLastName]" />
                            <dxe:ComboBoxEditItem Content="Last Name + First Name" Tag="[fieldLastName] + ' ' + [fieldFirstName]" />
                            <dxe:ComboBoxEditItem Content="Last Name only" Tag="[fieldLastName]" />
                        </dxe:ComboBoxEdit>
                    </StackPanel>
                </dx:GroupFrame>
                <dx:GroupFrame Header="Add New Summary Expression Bonus" Margin="0,0,0,8">
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="*" />
                            <RowDefinition Height="*" />
                        </Grid.RowDefinitions>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto" />
                            <ColumnDefinition Width="Auto" />
                            <ColumnDefinition Width="*" />
                        </Grid.ColumnDefinitions>
                        <TextBlock VerticalAlignment="Center">Bonus Name:</TextBlock>
                        <dxe:TextEdit Name="teBonusName" Grid.Column="1" TabIndex="2" VerticalAlignment="Center" Height="25" Width="75"
                                  Margin="4,4,4,4" EditValueChanging="teBonusName_EditValueChanging" />
                        <Button Name="btnAddField" Grid.Column="2" IsEnabled="False" Margin="4,4,0,4" TabIndex="3" MinWidth="70" Height="25"
                            VerticalAlignment="Center" HorizontalAlignment="Right" Content="Add Bonus" Click="btnAddField_Click" />
                        <TextBlock Grid.Column="0" Grid.Row="1" VerticalAlignment="Center">Internal Expression:</TextBlock>
                        <dxe:ButtonEdit Grid.Column="1" Grid.Row="1" Grid.ColumnSpan="2" Name="beExpression" IsReadOnly="True" IsEnabled="{Binding ElementName=btnAddField, Path=IsEnabled}"
                                    TabIndex="4" VerticalAlignment="Center" HorizontalAlignment="Stretch" Margin="4,4,0,0"
                                    Height="25" DefaultButtonClick="beExpression_Click" />
                    </Grid>
                </dx:GroupFrame>
            </StackPanel>
        </dxdb:DemoModuleControl.OptionsContent>
        <dxpg:PivotGridControl x:Name="pivotGrid" RowTreeWidth="180"
                           ShowColumnHeaders="False" ShowDataHeaders="False" ShowBorder="False"
                           ShowFilterHeaders="False" ShowRowGrandTotals="False" VerticalAlignment="Stretch"
                           ShowRowTotals="False" RowTotalsLocation="Near" AllowExpand="False" AllowExpandOnDoubleClick="False"
                           FieldUnboundExpressionChanged="pivotGrid_FieldUnboundExpressionChanged" Loaded="pivotGrid_Loaded"
                           DataFieldUnboundExpressionMode="UseSummaryValues">
            <dxpg:PivotGridControl.Fields>
                <dxpg:PivotGridField x:Name="fieldFirstName" FieldName="FirstName" AreaIndex="0"
                                 Visible="False" />
                <dxpg:PivotGridField x:Name="fieldLastName" FieldName="LastName" AreaIndex="0"
                                 Visible="False" />
                <dxpg:PivotGridField x:Name="fieldSalesPerson" UnboundFieldName="fSalesPerson" UnboundType="String"
                                 Area="RowArea"
                                 AreaIndex="0" UnboundExpression="{Binding ElementName=cbSalesPerson, Path=SelectedItem.Tag}"
                                 AllowedAreas="RowArea" Width="220" Caption="Sales Person"
                                 ValueTemplate="{StaticResource ResourceKey=UnboundFieldTemplate}"
                                 HeaderTemplate="{StaticResource ResourceKey=FieldHeaderTemplate}"
                                 HeaderListTemplate="{StaticResource ResourceKey=FieldHeaderTemplate}"/>
                <dxpg:PivotGridField x:Name="fieldQuarter" FieldName="OrderDate" UnboundFieldName="Quarter" Area="RowArea"
                                 AreaIndex="1"
                                 AllowedAreas="RowArea" GroupInterval="DateQuarter" Width="140" Caption="Quarter"
                                 ValueFormat="Qtr {0}" />
                <dxpg:PivotGridField x:Name="fieldExtendedPrice" FieldName="Extended Price" Area="DataArea" AreaIndex="2"
                                 AllowedAreas="DataArea" Caption="Extended Price" />
                <dxpg:PivotGridField x:Name="fieldQuantity" FieldName="Quantity" Area="DataArea" AreaIndex="1"
                                 AllowedAreas="DataArea" Caption="Quantity" />
                <dxpg:PivotGridField x:Name="fieldOrderCount" FieldName="OrderID" Area="DataArea" AreaIndex="0"
                                 AllowedAreas="DataArea" Caption="Order Count" SummaryType="Count" />
                <dxpg:PivotGridField x:Name="fieldNewYearBonus" UnboundFieldName="NewYearBonus" UnboundType="Decimal"
                                 UnboundExpression="Iif([fieldQuarter] == 4, Iif([fieldExtendedPrice] &gt; 40000, 600, 400), 0)" Area="DataArea" AreaIndex="3" AllowedAreas="DataArea" Caption="New Year Bonus" ValueTemplate="{StaticResource ResourceKey=UnboundFieldTemplate}"
                                 />
                <dxpg:PivotGridField x:Name="fieldOrderCountBonus" UnboundFieldName="OrderCountBonus" UnboundType="Decimal"
                                 UnboundExpression="Iif([fieldOrderCount] &gt; 50 and [fieldExtendedPrice] / [fieldOrderCount] &gt; 500, 15 * [fieldExtendedPrice] / [fieldQuantity] , 0)" Area="DataArea" AreaIndex="4" AllowedAreas="DataArea" Caption="Order Count Bonus" ValueTemplate="{StaticResource ResourceKey=UnboundFieldTemplate}"
                                 />
            </dxpg:PivotGridControl.Fields>
            <dxpg:PivotGridControl.FieldValueMenuCustomizations>
                <dxb:BarItemLinkSeparator />
                <dxb:BarButtonItem Name="removeBonus" Content="Remove this Bonus" ItemClick="removeBonus_ItemClick" Tag="{Binding Path=(dxpg:PivotGridPopupMenu.GridMenuInfo).ValueItem, RelativeSource={RelativeSource Self}}">
                    <dxb:BarButtonItem.IsVisible>
                        <Binding Path="(dxpg:PivotGridPopupMenu.GridMenuInfo).ValueItem" RelativeSource="{RelativeSource Self}">
                            <Binding.Converter>
                                <local:FieldValueItemToBooleanConverter />
                            </Binding.Converter>
                        </Binding>
                    </dxb:BarButtonItem.IsVisible>
                </dxb:BarButtonItem>
            </dxpg:PivotGridControl.FieldValueMenuCustomizations>
        </dxpg:PivotGridControl>
    </dxdb:DemoModuleControl>
</local:PivotGridDemoModule>!^using System;
using System.Windows;
using System.Windows.Controls;
using DevExpress.Xpf.DemoBase;
using DevExpress.Xpf.PivotGrid;
using DevExpress.Xpf.PivotGrid.Internal;
using System.Windows.Data;
using System.Collections.Generic;
using System.Collections;
using DevExpress.Xpf.Bars;

namespace PivotGridDemo.PivotGrid {
    public partial class UnboundExpressions : PivotGridDemoModule {
        public UnboundExpressions() {
            InitializeComponent();
            pivotGrid.DataSource = NWindData.SalesPerson;
            cbSalesPerson.SelectedIndex = 0;
        }
        void pivotGrid_Loaded(object sender, RoutedEventArgs e) {
            pivotGrid.BestFit(true, false);
            NamesController = CreateNamesController();
            teBonusName.Text = NamesController.GetNextDefaultName();
        }
        NamesController NamesController { get; set; }
        NamesController CreateNamesController() {
            NamesController controller = new NamesController("NewBonus");
            foreach(PivotGridField field in pivotGrid.Fields) {
                controller.RegisterAvailableName(field.FieldName);
                controller.RegisterAvailableName(field.Name);
                controller.RegisterAvailableName(field.ExpressionFieldName);
                controller.RegisterAvailableName(field.UnboundFieldName);
            }
            return controller;
        }
        PivotGridField GetNewInvisibleBonusField() {
            PivotGridField newBonusField = new PivotGridField(teBonusName.Text, FieldArea.DataArea);
            newBonusField.ValueTemplate = (DataTemplate)Resources["UnboundFieldTemplate"];
            newBonusField.Name = "field_" + teBonusName.Text;
            newBonusField.Visible = false;
            newBonusField.UnboundType = FieldUnboundColumnType.Object;
            newBonusField.UnboundExpression = beExpression.Text;
            return newBonusField;
        }
        void beExpression_Click(object sender, System.Windows.RoutedEventArgs e) {
            PivotGridField newBonus = GetNewInvisibleBonusField();
            pivotGrid.Fields.Add(newBonus);
            pivotGrid.ShowUnboundExpressionEditor(newBonus);
            beExpression.Text = newBonus.UnboundExpression;
            pivotGrid.Fields.Remove(newBonus);
        }
        void btnAddField_Click(object sender, System.Windows.RoutedEventArgs e) {
            PivotGridField newBonus = GetNewInvisibleBonusField();
            newBonus.Visible = true;
            pivotGrid.Fields.Add(newBonus);
            NamesController.RegisterAvailableName(newBonus.FieldName);
            teBonusName.Text = NamesController.GetNextDefaultName();
            beExpression.Text = string.Empty;
        }
        void teBonusName_EditValueChanging(object sender, DevExpress.Xpf.Editors.EditValueChangingEventArgs e) {
            btnAddField.IsEnabled = !string.IsNullOrEmpty(e.NewValue as string);
        }
        void pivotGrid_FieldUnboundExpressionChanged(object sender, PivotFieldEventArgs e) {
            if(e.Field != null && !e.Field.Visible && btnAddField.IsEnabled)
                beExpression.Text = e.Field.UnboundExpression;
        }
        private void Button_Click(object sender, RoutedEventArgs e) {
            if(sender is Control) {
                FieldValueItem fieldValueItem = ((sender as Control).DataContext) as FieldValueItem;
                if(fieldValueItem != null && fieldValueItem.Field != null)
                    pivotGrid.ShowUnboundExpressionEditor(fieldValueItem.Field);
            }
        }
        private void removeBonus_ItemClick(object sender, DevExpress.Xpf.Bars.ItemClickEventArgs e) {
            if(sender is BarButtonItem) {
                FieldValueItem fieldValueItem = ((sender as BarButtonItem).Tag) as FieldValueItem;
                if(fieldValueItem != null && fieldValueItem.Field != null) {
                    NamesController.UnRegisterAvailableName(fieldValueItem.Field.FieldName);
                    pivotGrid.Fields.Remove(fieldValueItem.Field);
                }
            }
        }
    }

    public class FieldValueItemToBooleanConverter : IValueConverter {
        #region IValueConverter Members
        object IValueConverter.Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
            FieldValueItem item = (FieldValueItem)value;
            return item.Field != null && item.Field.Area == FieldArea.DataArea && item.Field.UnboundType != FieldUnboundColumnType.Bound;
        }
        object IValueConverter.ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
            throw new NotImplementedException();
        }
        #endregion
    }

    public class NamesController {
        readonly string DefaultName;
        public NamesController(string defaultName) {
            DefaultName = defaultName;
            AvailableNames = new List<string>();
        }
        List<string> AvailableNames { get; set; }

        public string GetNextDefaultName() {
            int i = 0;
            string name;
            do {
                name = DefaultName + i;
                i++;
            } while(AvailableNames.Contains(name));
            return name;
        }

        public void RegisterAvailableName(string name) {
            AvailableNames.Add(name);
        }

        public void UnRegisterAvailableName(string name) {
            AvailableNames.RemoveAll(delegate(string availableName) {
                return name == availableName;
            });
        }
    }
}!CMSBAML```����IEPivotGridDemo, Version=13.1.4.0, Culture=neutral, PublicKeyToken=nullQ-clr-namespace:PivotGridDemo.PivotGrid.HelpersPivotGridDemo.PivotGrid.HelpersA%clr-namespace:PivotGridDemo.PivotGridPivotGridDemo.PivotGrid5/PivotGridDemo.PivotGrid.WindowDatabaseGenerator\XPresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNWindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35WSPresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35D9http://schemas.microsoft.com/winfx/2006/xaml/presentationRNSystem.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:x,http://schemas.microsoft.com/winfx/2006/xamla]DevExpress.Xpf.Core.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a;dx2http://schemas.devexpress.com/winfx/2008/xaml/core;helpers-clr-namespace:PivotGridDemo.PivotGrid.Helpers1local%clr-namespace:PivotGridDemo.PivotGrid�Title$Data Source Configuration��$	�286��$	�537���
ResizeMode$NoResize=��WindowStyle$
ToolWindow=��	Resources
60PivotGridDemo.PivotGrid.Helpers.ServerParameters serverParameters60PivotGridDemo.PivotGrid.BooleanInverterConverter booleanInverter�%&	&	.��.+���-��Name$lblRecordsCount��$�80��$�	0,12,12,0q�$	�Top=�$�Center=�$�Center=�$�SemiBold"�$�Right=�$	�237���-�Name$progressBar1��$�
12,0,12,12q�$�10��$�Bottom=���-$�
textBlock1��$�19��$
�Left=�$�	12,17,0,0q�$��SQL Server:��$	�Top=�$�70����-��Name$tbServer��$�23��$�	88,14,0,0q�$	�Top=�$
�Left=�$	�157�����
�Source#[�Path$Server�	�Mode$	TwoWay=���-$�label5��$��Login name:��$�19��$
�Left=�$�
12,165,0,0q�$	�Top=�$�70����-$�label6��$��	Password:��$�19��$
�Left=�$�
12,194,0,0q�$	�Top=�$�70����-$
tbLogin��$�23��$
�Left=�$�
88,162,0,0q�$	�Top=�$	�157��{�.���#[$Login�$	TwoWay=�G�-
G�Name$

pbPassword��$�23��$�
88,191,0,0q�$	�Top=�{�.$
�Left=�$	�157����-	$�label7��$��
Record count:��$�20��$�0,103,176,0q�$	�Top=�$�Right=�$�73����-
$tbRecordsCount��$�23��$�
0,100,12,0q�$	�Top=���
TextAlignment$Right=�$��50000��$�Right=�$	�148���-�Name$btnGenerateDatabase��$�Generate DB and ��$�23��$�
0,162,12,0q�$	�Top=�$�Right=�$	�237���-$
btnExit��$�23��$�
0,191,12,0q�$	�Top=�$�Right=�$	�237����-
$�	groupBox1��$��Connect using:��$�88��$
�Left=�$�	12,68,0,0q�$	�Top=�$	�233��.��.+�	�-
	�Name$
rdWindowsAuthentication��$�Windows authentication��$�16��$
�Left=�$
�6,6,0,0q�$	�Top=�d�	IsChecked�#[$UseWindowsAuthentication�$	TwoWay=�	�-$
rdSqlServerAuthentication��$�SQL Server authentication��$�16��$
�Left=�$�6,27,0,0q�$	�Top=��#[$UseWindowsAuthentication��	Converter#[$	TwoWay=���-$�label2��$��	Database:��$�19��$
�Left=�$�	12,43,0,0q�$	�Top=�$�70����-��Name$	lblDBName��$�19��$�	88,43,0,0q�$	�Top=�$
�Left=�$	�157�����#[$DBName�$	OneWay=��-$�btnTestConfiguration��$�Test Configuration��$�23��$�
0,133,12,0q�$	�Top=�$�Right=�$	�237��!7<dx:DXWindow x:Class="PivotGridDemo.PivotGrid.WindowDatabaseGenerator"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
        xmlns:helpers="clr-namespace:PivotGridDemo.PivotGrid.Helpers"
        xmlns:local="clr-namespace:PivotGridDemo.PivotGrid"
        Title="Data Source Configuration" Height="286" Width="537" ResizeMode="NoResize" WindowStyle="ToolWindow" >
    <dx:DXWindow.Resources>
        <helpers:ServerParameters x:Key="serverParameters" />
        <local:BooleanInverterConverter x:Key="booleanInverter" />
    </dx:DXWindow.Resources>
    <Grid>
        <Label Height="80" Margin="0,12,12,0" x:Name="lblRecordsCount" VerticalAlignment="Top" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontWeight="SemiBold" HorizontalAlignment="Right" Width="237" />
        <ProgressBar Margin="12,0,12,12" x:Name="progressBar1" Height="10" VerticalAlignment="Bottom" />
        <TextBlock Height="19" HorizontalAlignment="Left" Margin="12,17,0,0" Name="textBlock1" Text="SQL Server:" VerticalAlignment="Top" Width="70" />
        <TextBox Height="23" Margin="88,14,0,0" x:Name="tbServer" VerticalAlignment="Top" Text="{Binding Source={StaticResource serverParameters}, Path=Server, Mode=TwoWay}" HorizontalAlignment="Left" Width="157" />
        <TextBlock Text="Login name:" Height="19" HorizontalAlignment="Left" Margin="12,165,0,0" Name="label5" VerticalAlignment="Top" Width="70" />
        <TextBlock Text="Password:" Height="19" HorizontalAlignment="Left" Margin="12,194,0,0" Name="label6" VerticalAlignment="Top" Width="70" />
        <TextBox Height="23" HorizontalAlignment="Left" Margin="88,162,0,0" x:Name="tbLogin" VerticalAlignment="Top" Width="157" IsEnabled="False"
                 Text="{Binding Source={StaticResource serverParameters}, Path=Login, Mode=TwoWay}" />
        <PasswordBox Height="23" Margin="88,191,0,0" x:Name="pbPassword" VerticalAlignment="Top" IsEnabled="False" HorizontalAlignment="Left" Width="157" />
        <TextBlock Text="Record count:" Height="20" Margin="0,103,176,0" Name="label7" VerticalAlignment="Top" HorizontalAlignment="Right" Width="73" />
        <TextBox Height="23" Margin="0,100,12,0" x:Name="tbRecordsCount" VerticalAlignment="Top" TextAlignment="Right" Text="50000" TextChanged="tbRecordsCount_TextChanged" HorizontalAlignment="Right" Width="148" />
        <Button Content="Generate DB and " Height="23" Margin="0,162,12,0" x:Name="btnGenerateDatabase" VerticalAlignment="Top" Click="btnGenerateDatabase_Click" HorizontalAlignment="Right" Width="237" />
        <Button Height="23" Margin="0,191,12,0" x:Name="btnExit" VerticalAlignment="Top" Click="btnExit_Click" HorizontalAlignment="Right" Width="237" />
        <GroupBox Header="Connect using:" Height="88" HorizontalAlignment="Left" Margin="12,68,0,0" Name="groupBox1" VerticalAlignment="Top" Width="233">
            <Grid>
                <RadioButton Content="Windows authentication" Height="16" HorizontalAlignment="Left" Margin="6,6,0,0" x:Name="rdWindowsAuthentication" VerticalAlignment="Top" IsChecked="{Binding Source={StaticResource serverParameters}, Path=UseWindowsAuthentication, Mode=TwoWay}" Checked="rdWindowsAuthentication_Checked" />
                <RadioButton Content="SQL Server authentication" Height="16" HorizontalAlignment="Left" Margin="6,27,0,0" x:Name="rdSqlServerAuthentication" VerticalAlignment="Top" IsChecked="{Binding Source={StaticResource serverParameters}, Path=UseWindowsAuthentication, Converter={StaticResource booleanInverter}, Mode=TwoWay}" Checked="rdSqlServerAuthentication_Checked" />
            </Grid>
        </GroupBox>
        <TextBlock Text="Database:" Height="19" HorizontalAlignment="Left" Margin="12,43,0,0" Name="label2" VerticalAlignment="Top" Width="70" />
        <TextBlock Text="{Binding Source={StaticResource serverParameters}, Path=DBName, Mode=OneWay}" Height="19" Margin="88,43,0,0" x:Name="lblDBName" VerticalAlignment="Top" HorizontalAlignment="Left" Width="157" />
        <Button Content="Test Configuration" Height="23" Margin="0,133,12,0" Name="btnTestConfiguration" VerticalAlignment="Top" Click="btnTestConfiguration_Click" HorizontalAlignment="Right" Width="237" />
    </Grid>
</dx:DXWindow>!4using DevExpress.Xpf.Core;
using DevExpress.Xpo;
using DevExpress.Xpo.DB;
using PivotGridDemo.PivotGrid.Helpers;
using System;
using System.Globalization;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Input;

namespace PivotGridDemo.PivotGrid {
    public partial class WindowDatabaseGenerator : DXWindow {
        public WindowDatabaseGenerator()
            : this(null, "Start Demo") {
        }
        public WindowDatabaseGenerator(UserControl control, string demoString) {
            InitializeComponent();
            DemoString = demoString;
            if(control != null) {
                Owner = Window.GetWindow(control);
                WindowStartupLocation = WindowStartupLocation.CenterOwner;
            } else
                WindowStartupLocation = WindowStartupLocation.CenterScreen;
            ShowInTaskbar = false;
            btnGenerateDatabase.Content = (string)btnGenerateDatabase.Content + DemoString;
            btnExit.Content = (string)btnExit.Content + DemoString;
            pbPassword.Password = ServerParameters.Password;
            pbPassword.PasswordChanged += (s, e) => { ServerParameters.Password = pbPassword.Password; };
            Closed += (s, e) => {
                if(DatabaseHelper.IsGenerating)
                    DatabaseHelper.CancelDatabaseGenerationAsync();
                ServerParameters.SaveParameters();
                Mouse.OverrideCursor = null;
            };
        }
        protected string DemoString { get; set; }
        void rdWindowsAuthentication_Checked(object sender, RoutedEventArgs e) {
            tbLogin.IsEnabled = pbPassword.IsEnabled = false;
        }
        void rdSqlServerAuthentication_Checked(object sender, RoutedEventArgs e) {
            tbLogin.IsEnabled = pbPassword.IsEnabled = true;
        }
        void tbRecordsCount_TextChanged(object sender, System.Windows.Controls.TextChangedEventArgs e) {
            int temp;
            if(!int.TryParse(tbRecordsCount.Text, out temp))
                tbRecordsCount.Text = "50000";
        }
        void btnExit_Click(object sender, RoutedEventArgs e) {
            DialogResult = false;
            Close();
        }
        void btnGenerateDatabase_Click(object sender, RoutedEventArgs e) {
            GenerateRecords();
        }
        void DisableControls() {
            btnGenerateDatabase.IsEnabled = false;
            btnTestConfiguration.IsEnabled = false;
            rdSqlServerAuthentication.IsEnabled = rdWindowsAuthentication.IsEnabled = false;
            tbLogin.IsEnabled = false;
            pbPassword.IsEnabled = false;
            tbServer.IsEnabled = false;
            tbRecordsCount.IsEnabled = false;
        }
        void GenerateRecords() {
            if(!ServerParameters.IsParametersCorrect()) return;
            Mouse.OverrideCursor = Cursors.Wait;
            IDataStore store = XpoDefault.GetConnectionProvider(ServerParameters.GetDBConnectionString(), AutoCreateOption.DatabaseAndSchema);
            XpoDefault.DataLayer = new SimpleDataLayer(store);
            Title = AsyncModeStrings.GeneratingRecords;
            int rowsTotal = int.Parse(tbRecordsCount.Text);
            progressBar1.Maximum = rowsTotal;
            progressBar1.Value = 0;
            DisableControls();
            DatabaseHelper.GenerateDatabaseAsync(rowsTotal, UpdateProgress, OnDatabaseGenerated);
        }
        void UpdateProgress(int rowsGenerated) {
            int rowsTotal = int.Parse(tbRecordsCount.Text);
            progressBar1.Value = rowsGenerated;
            btnExit.Content = string.Format("{0} rows is enough. {1}", rowsGenerated, DemoString);
        }
        void OnDatabaseGenerated() {
            Close();
        }
        void btnTestConfiguration_Click(object sender, RoutedEventArgs e) {
            lblRecordsCount.Content = string.Empty;
            int recordsCount = DatabaseHelper.CalculateRecordCount();
            if(recordsCount != -1)
                lblRecordsCount.Content = string.Format(AsyncModeStrings.RecordsCount, recordsCount);
            else
                DXMessageBox.Show("Failed to connect to the server.", "Connection Error", MessageBoxButton.OK, MessageBoxImage.Error);
        }
    }

    class AsyncModeStrings {
        public const string GeneratingRecords = "Generating records...";
        public const string RecordsCount = "Current record count = {0}";
    }

    [ValueConversion(typeof(bool), typeof(bool))]
    public class BooleanInverterConverter : IValueConverter {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture) {
            if(targetType != typeof(bool) && targetType != typeof(bool?))
                throw new InvalidOperationException("The target must be a boolean");
            return !(bool)value;
        }
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) {
            return Convert(value, targetType, parameter, culture);
        }
    }
}!vusing System;
using System.Windows;
using DevExpress.DemoData;
using DevExpress.Xpf.DemoBase;
using DevExpress.Xpf.DemoBase.Helpers;
using DevExpress.DemoData.Helpers;
using System.Globalization;
using System.Threading;

namespace PivotGridDemo {
    public class Program {
        [STAThread]
        static void Main(string[] args) {
            StartupBase.Run<Startup>(null);
        }
    }
    public class Startup : DemoStartup {
        public static void InitDemo() {
            Loader.DemoDataAssembly = typeof(DevExpress.DemoData.AssemblyMarker).Assembly;
        }
        protected override bool GetDebug() {
#if DEBUG
            return true;
#else
            return false;
#endif
        }
        protected override Type GetFixtureTypeForXBAPOrSLTesting() {
            return null;
        }

        protected override Application CreateApplication(Application app) {
            SetCultureInfo();
            return base.CreateApplication(app);
        }

        void SetCultureInfo() {
            CultureInfo demoCI = (CultureInfo)Thread.CurrentThread.CurrentCulture.Clone();
            demoCI.NumberFormat.CurrencyDecimalDigits = 2;
            demoCI.NumberFormat.CurrencyDecimalSeparator = ".";
            demoCI.NumberFormat.CurrencyGroupSeparator = ",";
            demoCI.NumberFormat.CurrencyGroupSizes = new int[] { 3 };
            demoCI.NumberFormat.CurrencyNegativePattern = 0;
            demoCI.NumberFormat.CurrencyPositivePattern = 0;
            demoCI.NumberFormat.CurrencySymbol = "$";
            Thread.CurrentThread.CurrentCulture = demoCI;
        }
    }
}!{using System;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Windows;
using DevExpress.Xpf.DemoBase;

[assembly: AssemblyTitle("DevExpress DXPivotGrid for WPF Main Demo")]
[assembly: AssemblyDescription("DevExpress DXPivotGrid for WPF Main Demo")]
[assembly: AssemblyProduct("DevExpress DXPivotGrid for WPF")]
[assembly: AssemblyTrademark("DevExpress DXPivotGrid for WPF")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany(AssemblyInfo.AssemblyCompany)]
[assembly: AssemblyCopyright(AssemblyInfo.AssemblyCopyright)]
[assembly: AssemblyCulture("")]

[assembly: ProductID("DXPivotGrid")]

[assembly: ComVisible(false)]

[assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)]

[assembly: AssemblyVersion(AssemblyInfo.Version)]
[assembly: AssemblyFileVersion(AssemblyInfo.FileVersion)]!�

namespace PivotGridDemo.Properties {
    using System;
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    internal class Resources {

        private static global::System.Resources.ResourceManager resourceMan;

        private static global::System.Globalization.CultureInfo resourceCulture;

        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
        internal Resources() {
        }
        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
        internal static global::System.Resources.ResourceManager ResourceManager {
            get {
                if (object.ReferenceEquals(resourceMan, null)) {
                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("PivotGridDemo.Properties.Resources", typeof(Resources).Assembly);
                    resourceMan = temp;
                }
                return resourceMan;
            }
        }
        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
        internal static global::System.Globalization.CultureInfo Culture {
            get {
                return resourceCulture;
            }
            set {
                resourceCulture = value;
            }
        }
    }
}!+MSBAML```����\XPresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNWindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35WSPresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNSystem.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089a]DevExpress.Xpf.Core.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a�MergedDictionaries
�Source�D9http://schemas.microsoft.com/winfx/2006/xaml/presentation:x,http://schemas.microsoft.com/winfx/2006/xaml;dx2http://schemas.devexpress.com/winfx/2008/xaml/core�$RL/PivotGridDemo;component/Controls/ControlStyles/Azure/NavigationButtons.xaml?�%!�<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core">

 <ResourceDictionary.MergedDictionaries>
  <ResourceDictionary Source="/PivotGridDemo;component/Controls/ControlStyles/Azure/NavigationButtons.xaml" />
 </ResourceDictionary.MergedDictionaries>
</ResourceDictionary>!fMSBAML```����\XPresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNWindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35WSPresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNSystem.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089�MergedDictionaries
�Source�D9http://schemas.microsoft.com/winfx/2006/xaml/presentation:x,http://schemas.microsoft.com/winfx/2006/xaml�$+%/PivotGridDemo;component/Generic.xaml?�%!S<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="/PivotGridDemo;component/Generic.xaml" />
    </ResourceDictionary.MergedDictionaries>
</ResourceDictionary>!�MSBAML```����\XPresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNWindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35WSPresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNSystem.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089a]DevExpress.Xpf.Core.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a�MergedDictionaries�D9http://schemas.microsoft.com/winfx/2006/xaml/presentation:x,http://schemas.microsoft.com/winfx/2006/xaml;dx2http://schemas.devexpress.com/winfx/2008/xaml/core%!G<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core">
    <ResourceDictionary.MergedDictionaries>
    </ResourceDictionary.MergedDictionaries>
</ResourceDictionary>!�MSBAML```����\XPresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNWindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35WSPresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNSystem.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089a]DevExpress.Xpf.Core.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a�MergedDictionaries�D9http://schemas.microsoft.com/winfx/2006/xaml/presentation:x,http://schemas.microsoft.com/winfx/2006/xaml;dx2http://schemas.devexpress.com/winfx/2008/xaml/core%!G<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core">
    <ResourceDictionary.MergedDictionaries>
    </ResourceDictionary.MergedDictionaries>
</ResourceDictionary>!�MSBAML```����\XPresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNWindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35WSPresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35RNSystem.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089a]DevExpress.Xpf.Core.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a�MergedDictionaries�D9http://schemas.microsoft.com/winfx/2006/xaml/presentation:x,http://schemas.microsoft.com/winfx/2006/xaml;dx2http://schemas.devexpress.com/winfx/2008/xaml/core%!G<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core">
    <ResourceDictionary.MergedDictionaries>
    </ResourceDictionary.MergedDictionaries>
</ResourceDictionary>�����lSystem.Resources.ResourceReader, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089#System.Resources.RuntimeResourceSetPADPADP�7DevExpress.Charts.v{DXVersion}.Core
DevExpress.Data.v{DXVersion}.Linq
DevExpress.PivotGrid.v{DXVersion}.Core
DevExpress.Printing.v{DXVersion}.Core
DevExpress.Xpf.Charts.v{DXVersion}
DevExpress.Xpf.Gauges.v{DXVersion}
DevExpress.Xpf.Docking.v{DXVersion}
DevExpress.Xpf.Grid.v{DXVersion}
DevExpress.Xpf.Grid.v{DXVersion}.Core
DevExpress.Xpf.Layout.v{DXVersion}.Core
DevExpress.Xpf.LayoutControl.v{DXVersion}
DevExpress.Xpf.PivotGrid.v{DXVersion}
DevExpress.Xpf.Printing.v{DXVersion}
DevExpress.Xpf.Printing.v{DXVersion}.Core
DevExpress.Xpo.v{DXVersion}<XtraSerializer version="1.0" application="PivotGridControl">
  <property name="#LayoutVersion" isnull="true" />
  <property name="$PivotGridControl" iskey="true" value="PivotGridControl">
    <property name="ShowRowHeaders">true</property>
    <property name="ShowRowGrandTotals">true</property>
    <property name="ShowRowTotals">true</property>
    <property name="TotalsLocation">Far</property>
    <property name="ShowTotalsForSingleValues">true</property>
    <property name="ShowCustomTotalsForSingleValues">false</property>
    <property name="ShowColumnTotals">true</property>
    <property name="ShowDataHeaders">true</property>
    <property name="ShowGrandTotalsForSingleValues">false</property>
    <property name="ShowFilterHeaders">true</property>
    <property name="ShowColumnHeaders">true</property>
    <property name="Fields" iskey="true" value="6">
      <property name="Item1" isnull="true" iskey="true">
        <property name="Visible">true</property>
        <property name="UnboundFieldName">fieldYear</property>
        <property name="SerializedSortByField" isnull="true" />
        <property name="SortByConditions" iskey="true" value="0" />
        <property name="Caption">Order Year</property>
        <property name="GroupInterval">DateYear</property>
        <property name="FieldName">OrderDate</property>
        <property name="Width">85</property>
        <property name="Height">21</property>
        <property name="Area">ColumnArea</property>
        <property name="AreaIndex">0</property>
        <property name="Name">fieldYear</property>
        <property name="SortOrder">Descending</property>
        <property name="SortMode">Default</property>
      </property>
      <property name="Item2" isnull="true" iskey="true">
        <property name="Visible">true</property>
        <property name="UnboundFieldName">fieldQuarter</property>
        <property name="SerializedSortByField" isnull="true" />
        <property name="SortByConditions" iskey="true" value="0" />
        <property name="ValueFormat">Qtr {0}</property>
        <property name="Caption">Order Quarter</property>
        <property name="GroupInterval">DateQuarter</property>
        <property name="FieldName">OrderDate</property>
        <property name="Width">70</property>
        <property name="Height">21</property>
        <property name="Area">FilterArea</property>
        <property name="AreaIndex">0</property>
        <property name="Name">fieldQuarter</property>
        <property name="SortOrder">Ascending</property>
        <property name="SortMode">Default</property>
      </property>
      <property name="Item3" isnull="true" iskey="true">
        <property name="Visible">true</property>
        <property name="UnboundFieldName">fieldMonth</property>
        <property name="SerializedSortByField" isnull="true" />
        <property name="SortByConditions" iskey="true" value="0" />
        <property name="Caption">Order Month</property>
        <property name="GroupInterval">DateMonth</property>
        <property name="FieldName">OrderDate</property>
        <property name="Width">70</property>
        <property name="Height">21</property>
        <property name="Area">FilterArea</property>
        <property name="AreaIndex">1</property>
        <property name="Name">fieldMonth</property>
        <property name="SortOrder">Ascending</property>
        <property name="SortMode">Default</property>
      </property>
      <property name="Item4" isnull="true" iskey="true">
        <property name="Visible">true</property>
        <property name="UnboundFieldName" />
        <property name="SerializedSortByField" isnull="true" />
        <property name="SortByConditions" iskey="true" value="0" />
        <property name="Caption">Customer</property>
        <property name="FieldName">CompanyName</property>
        <property name="Width">171</property>
        <property name="Height">21</property>
        <property name="Area">RowArea</property>
        <property name="AreaIndex">0</property>
        <property name="Name">fieldCompanyName</property>
        <property name="SortOrder">Ascending</property>
        <property name="SortMode">Default</property>
      </property>
      <property name="Item5" isnull="true" iskey="true">
        <property name="Visible">true</property>
        <property name="UnboundFieldName" />
        <property name="SerializedSortByField" isnull="true" />
        <property name="SortByConditions" iskey="true" value="0" />
        <property name="Caption">Product Name</property>
        <property name="FieldName">ProductName</property>
        <property name="Width">120</property>
        <property name="Height">21</property>
        <property name="Area">FilterArea</property>
        <property name="AreaIndex">2</property>
        <property name="Name">fieldProductName</property>
        <property name="SortOrder">Ascending</property>
        <property name="SortMode">Default</property>
      </property>
      <property name="Item6" isnull="true" iskey="true">
        <property name="Visible">true</property>
        <property name="UnboundFieldName" />
        <property name="SerializedSortByField" isnull="true" />
        <property name="SortByConditions" iskey="true" value="0" />
        <property name="CellFormat">c</property>
        <property name="Caption">Product Amount</property>
        <property name="FieldName">ProductAmount</property>
        <property name="Width">70</property>
        <property name="Height">21</property>
        <property name="Area">DataArea</property>
        <property name="AreaIndex">0</property>
        <property name="Name">fieldProductAmount</property>
        <property name="SortOrder">Ascending</property>
        <property name="SortMode">Default</property>
      </property>
    </property>
    <property name="DrawFocusedCellRect">true</property>
    <property name="ShowColumnGrandTotals">true</property>
    <property name="Groups" iskey="true" value="0" />
  </property>
</XtraSerializer><XtraSerializer version="1.0" application="PivotGridControl">
  <property name="#LayoutVersion" isnull="true" />
  <property name="$PivotGridControl" iskey="true" value="PivotGridControl">
    <property name="ShowRowHeaders">true</property>
    <property name="ShowRowGrandTotals">true</property>
    <property name="ShowRowTotals">true</property>
    <property name="TotalsLocation">Far</property>
    <property name="ShowTotalsForSingleValues">true</property>
    <property name="ShowCustomTotalsForSingleValues">false</property>
    <property name="ShowColumnTotals">true</property>
    <property name="ShowDataHeaders">true</property>
    <property name="ShowGrandTotalsForSingleValues">false</property>
    <property name="ShowFilterHeaders">true</property>
    <property name="ShowColumnHeaders">true</property>
    <property name="Fields" iskey="true" value="6">
      <property name="Item1" isnull="true" iskey="true">
        <property name="Visible">true</property>
        <property name="UnboundFieldName">fieldYear</property>
        <property name="SerializedSortByField" isnull="true" />
        <property name="SortByConditions" iskey="true" value="0" />
        <property name="Caption">Order Year</property>
        <property name="GroupInterval">DateYear</property>
        <property name="FieldName">OrderDate</property>
        <property name="Width">80</property>
        <property name="Height">21</property>
        <property name="Area">ColumnArea</property>
        <property name="AreaIndex">0</property>
        <property name="Name">fieldYear</property>
        <property name="SortOrder">Descending</property>
        <property name="SortMode">Default</property>
      </property>
      <property name="Item2" isnull="true" iskey="true">
        <property name="Visible">true</property>
        <property name="UnboundFieldName">fieldQuarter</property>
        <property name="SerializedSortByField" isnull="true" />
        <property name="SortByConditions" iskey="true" value="0" />
        <property name="ValueFormat">Qtr {0}</property>
        <property name="Caption">Order Quarter</property>
        <property name="GroupInterval">DateQuarter</property>
        <property name="FieldName">OrderDate</property>
        <property name="Width">80</property>
        <property name="Height">21</property>
        <property name="Area">ColumnArea</property>
        <property name="AreaIndex">1</property>
        <property name="Name">fieldQuarter</property>
        <property name="SortOrder">Ascending</property>
        <property name="SortMode">Default</property>
      </property>
      <property name="Item3" isnull="true" iskey="true">
        <property name="Visible">true</property>
        <property name="UnboundFieldName">fieldMonth</property>
        <property name="SerializedSortByField" isnull="true" />
        <property name="SortByConditions" iskey="true" value="0" />
        <property name="Caption">Order Month</property>
        <property name="GroupInterval">DateMonth</property>
        <property name="FieldName">OrderDate</property>
        <property name="Width">80</property>
        <property name="Height">21</property>
        <property name="Area">ColumnArea</property>
        <property name="AreaIndex">2</property>
        <property name="Name">fieldMonth</property>
        <property name="SortOrder">Ascending</property>
        <property name="SortMode">Default</property>
      </property>
      <property name="Item4" isnull="true" iskey="true">
        <property name="Visible">true</property>
        <property name="UnboundFieldName" />
        <property name="SerializedSortByField" isnull="true" />
        <property name="SortByConditions" iskey="true" value="0" />
        <property name="Caption">Customer</property>
        <property name="FieldName">CompanyName</property>
        <property name="Width">150</property>
        <property name="Height">21</property>
        <property name="Area">RowArea</property>
        <property name="AreaIndex">0</property>
        <property name="Name">fieldCompanyName</property>
        <property name="SortOrder">Ascending</property>
        <property name="SortMode">Default</property>
      </property>
      <property name="Item5" isnull="true" iskey="true">
        <property name="Visible">true</property>
        <property name="UnboundFieldName" />
        <property name="SerializedSortByField" isnull="true" />
        <property name="SortByConditions" iskey="true" value="0" />
        <property name="Caption">Product Name</property>
        <property name="FieldName">ProductName</property>
        <property name="Width">120</property>
        <property name="Height">21</property>
        <property name="Area">RowArea</property>
        <property name="AreaIndex">1</property>
        <property name="Name">fieldProductName</property>
        <property name="SortOrder">Ascending</property>
        <property name="SortMode">Default</property>
      </property>
      <property name="Item6" isnull="true" iskey="true">
        <property name="Visible">true</property>
        <property name="UnboundFieldName" />
        <property name="SerializedSortByField" isnull="true" />
        <property name="SortByConditions" iskey="true" value="0" />
        <property name="CellFormat">c</property>
        <property name="Caption">Product Amount</property>
        <property name="FieldName">ProductAmount</property>
        <property name="Width">70</property>
        <property name="Height">21</property>
        <property name="Area">DataArea</property>
        <property name="AreaIndex">0</property>
        <property name="Name">fieldProductAmount</property>
        <property name="SortOrder">Ascending</property>
        <property name="SortMode">Default</property>
      </property>
    </property>
    <property name="DrawFocusedCellRect">true</property>
    <property name="ShowColumnGrandTotals">true</property>
    <property name="Groups" iskey="true" value="0" />
  </property>
</XtraSerializer>BSJBv4.0.30319l�#~t��#Strings��<#US`N#GUIDpN�$#BlobW�	�%3�]<�)x2�x&o�$3
IBNBUB
�|����9%lX�|����������#�"SDd�t|����"��&:	!	&K	!	*�
�
&&!	&V!	&e!	BB=BK���*

{
B�
B
�|
�|8B"LD"xDD.D&!!	&N!	���D&!	K�k|�|�|&�!	B"Bq|�|�|�|�|�|-|��2 ����?�s�S�6H8*L"�
�"��"�2#�N#�&�'!	n)��)B:+�*&D+!	�+�,�.,|>�,c,:�,�*P-
�-�:�-�*�-B:�-�*:�-�*:.�*&;/!	&p/!	&�/!	�/�/0�/�0�/.�1�1&Q2!	&�2!	.�2�2&�3!	�4B�4D5DE5|�6D&�7!	�9D�:|2;;&�;!	&�;!	0<%B=	=:3=�*&�=!	=>|&�?!	�A{A�A{A�B%�F|&H!	�I�4J�/�J�/L�\LD�L�LM	MYM	MLPB�P�P.Q�P,Q	MCQ	M`Q	MyQ	M�Q	M�Q	M�Q	M�Q	MR�2RRFRDYRDtR	M�R	M�R�R[�RS�R S�R>SBPS�RkSBF�S�S�S{A�S{A�S{A&;T!	~T_T&�T!	.�TD*�T�
&<U!	&vU!	2'V&XV!	�V�W�IW��W��W��WB
;X|
YX|�XB&Y�>YB]Y�*yYgY*�YgY*�Y�Y*�YgY*�Y�Y*�Y�Y*Z�Y*Z�Y*7Z�YJZZOZJkZOZJ�ZOZ�ZB�B�Z�ZJ�ZOZ�ZBJ�ZOZ.'[[./[[.?[[^[%k[D|[D�[D
�[|
�[|
�[|
�[|
�[|\B"0\D"H\D.{\D;]Bb]G]&o]!	�]D�]�]9^%.S^D&�^!	N5_!_NA_!_R�_!_R�_!_"v!D�_%,`%Nd`!_N�`!_R�`!_R�`!_�`Ba�Ra�R_aB�a�R�a�a�aB�a��a�b�]Kb2bUb�&�b!	�bD&�b!	KcB�cD
,d|6Id7d6Td7d
{d|
�d|�d�]�d|�d�]�dXeBFe�ce��e��e��e��f�f�f�f�f�f*g�
*g�
*"g�
*1g�
[g�kgB�g	M�g	Mh�h�ahBV�h�h�h�h�hB�(i`iAi�i��iB�i��i�&/j
j&;j
j&[j!	&tj
j2�j�j2�3�j2k�j&@k!	2ck�j&�k!	2�k�jg8lylB&�l!	�lDm�*$m�
@mD�mB&�m!	:wn�*:�n�*:�n�*�n
:�n�*:�n�*:�n�*�n|
oDCoD|o�W(i�o
:�o�*:�o�*2�o�o2p�o&cp!	�p%&�p!	#qB&8q!	:�q�*:�q�*:�q�*:�q�*:�q�*:�q�*:r�*:r�*:!r�*:5r�*:Mr�*:Yr�*:gr�*:sr�*W�rk(i�rB�rB:�r�*:&s�*:Fs�*:�s�*:�s�*:�s�*:4t�*:Pt�*:Zt�*:qt�*:yt�*�tB:�t�*&�t!	&�t!	2uu&\u!	�u�/�u�/�u�/�u�/6�u�uv�/HvBQvBuvXv.�v[�v�/&�v!	&�v!	w	M5wG].�wD&�w!	&�w!	&x!	&,y!	&ky!	2�y�j2�y�jOz%kzDN�z!_"{{".{{"H{{o{D"�{{&�{!	&�}!	&!~�}&4~
j&X~�}&l~
j&{~
j&�~!	�~%&�~!	W_T�Ai���|�;�%�|:}��*:���*:؀�*:
��*:`��*:���*&ځ!	&&�!	&��!	&��!	��`�&-�!	&X�!	&��!	��%��
&*�!	Zk�_��%.���2.���2.���23�����/6
��P�B`�BFs��S^����F�����܈���	M�	M2�R2	o2�2�2

�2

�2

�2	
!2	0'2@32E<2JB2SK2 XS2#aXl'k�lD){�l6��l	K��l	M��l%M���l	d��lf�l	l�
l	v��l	x��'l)z�9l	{Bl	�!>l	�%Glp�1Mlp�6Xlp�;l�=�A�lA�[�lD�a�lE�o�lD�s��l	���	��lD��lD��&l	��7lD��DlE��XlD��i��rlD��~lD���lD��l��lD��lI,��lI.�l	0�lD1
lD9lET";lDT&Kf9clDj9wlDs@�lD{H�lD�P�lD�V�lD�_��	�i��l��n�lD�plD�wlD�'lD��6lD��=lD��Gl%��ZlD�mlD
�wlD��l	(��l	(��lD*���	1���Q1���	1�"U3�W	3�X	5l	6�X	8�{	:	�{	<�V��V��T���2E
k`
oQ��2Q��2Q��2Q��2Q��21D1\1c	1i	1s	1~	1�	Q��
2�,242;2E��2�2�������2�2_BhF�{���FF�6_�Q��2Q��2�����]�w��������k�����!�&���+�����+�0��+�%�65@�X�r�y������2Xc�V��2V��2Q�2Q�(2Q�:2Q�I2Q�R2Q�_2Q�q2Q�~2Q��2Q��26��6��/�m	�	�	�	�!	��&	3�X�s�XU	i	�V�t[	V�x[	V��[	V��[	V��[	6�n	t � 2� 2� �� �� �	!� ![	:!�!�!2�!�!	�"�	�$�$2�$��$�$��$2�$�	�$�$2�%
�%!
�%	&%&e
,&j
6�'�6)(�6G(�6b(�z)�
�k�)�
�)�
�)�
�)�
��1*	�+	�+�
�+�
�+�
�+�
�+�
",�
3,�,�k�,�
�,�
�,�
�,�
�,��1�,1-1-1*-1>-]-�.�.2�k/�
/�
�,�
�)�
/�
-/�
��0�0�60�L0�]0�u0��0��0��0��k�)�
�)�
�)�
/�
-/�
�0�
�0��0�	1�1���E1�
\1�x1�k�)�
�)�
�)�
�1�
/�
�,�
���1��12�k�,�
3�
.3�
�,�
@3�
/�
M3�
Z3�
/�
���V�3V��3V��3V��3�k�)�
�)�
�)�
�1�
/�
�,�
�3#�3#��Q��2Q��2Q��2Q��2Q��2T����42!4�4c5�#5�45�L5�X5�b5����k��425�#5�45��5	�5	L5�X5��k	6�
6�
-6�
@6�
U6�
_6�
k6�
���V�v6�V�~6�V��6�V��6�V��6�V��6�V��6�V��6��6�7�(7�>7�Z7�z)�
�k�)�
78�
�)�
�1�
�)�
���8��8�U9�t9��1��k�)�
�)�
�)�
�1�
/�
�,�
���;��;��;�<	<�;<

K<	Y<	�k�,�
�,�
n<�
|<�
�<�
Z3�
3�
.3�
@3�
/�
�<�
�<�
M3�
/�
�0�
-/�
�,�
��M	�<
H>I
Q>	l>�
�+	�>	�+�
�k.3�
�,�
�,�
�)�
�1�
/�
�3#�,���V��>
V��>
V��>
�>?	�k?�
,?�
<?�
L?�
\?�
���?	�?�
�k@�
�,�
�,�
'@�
��S@	�k�1�
/�
�,�
�)�
/�
-/�
��[@	r@	�k�)�
�)�
�1�
/�
/�
��S@	�@	�@�
�@�
�@�
�@�
A�
.A�
>A�
_A�
�k�)�
�)�
�1�
�)�
/�
-/�
�0�
���A\
B�"B	�k�)�
�1�
/�
8B�
�,�
IB�
��!\B2!rB2!B\
�B�
�B

�B	�k�B�
�,�
�0�
/�
-/�
�,�
��
C�
�B�
�C

�C�
�C�
�C�C��C	�k�)�
�)�
�)�
�C�
�C�
�)�
�1�
/�
��Q�
D2�B�
�D

�D	�D	�k�)�
�1�
8B�
�,�
IB�
���k�)�
�)�
�)�
�1�
/�
�,�
�3#�3#���D�E�E��k�)�
�)�
�)�
�1�
/�
�,�
/�
-/�
�3#�3#'E#���E�
�k�)�
�)�
�)�
�)�
�1�
�E�
�E�
F�F�
��'F�PF�\F�hF�vF��F�
BH�
`H�
}H	�k�)�
�H�
/�
/�
�H�
��-I�
S@	>I�
�kM3�
�,�
.3�
/�
�,�
��]J	kJ	wJ��J&	�k�<�
�<�
/�
�1�
�,�
/�
�J�
�J�
�J�
�J�
��K�
!0K2�K�
LL�k/�
'@�
�,�
���L�L�MxN|�MR�NWl`l\(Nal�(Na�2P �a	5� �l	?� �r	G� ��	L� ��	R� ��	W� ��	]2!��	]9!�
]]!�6
a�a	g	�!�l	?	�!�a	g�!���!�;��#�o�
$�l	?$�a	g�$����%����l	����'��3��l	��g�'��3��l	� ��"�'�#�3�&&��
'�(��'�(��')��
*,)��*�+�1
&,�+�E
&-,�Z
].T,�g
].�,��
0.�,��
8/-��
>/h-��
0�-��
D2�.��

2�.�l	g2�.��2�.�_]2�.�j]2�.�u�2/��]3/���3/��]4)/���46/��5B/���5P/��
6�/��
6X0�]6�0� ]6�0�66(1�l	�611�l	�7A1���9I1���9^1���:k1�l	�:t1�l	�;�1���=�1���=�1���>�1�l	�>�1�l	�?�1���C�1���C2��D2��D(2�"�E52�,E=2�5
ER2�l	�F[2�l	�Gk2���Is2���I�2�I.J�2�l	�J�2�l	KK�2���O�2���O�2�nXP�2�{]P3�"�Q3��cQ3��iQ&3�l	�R/3�l	�Sn3���Xv3���X�3���Y�3���Y�3���Z�3���Z�3�	c[�3�i[�3��
\(4���\T4�l	g^�4���^�4��G_�4��L_�4�g`�4�g`n5�0�`y5�8ga�5�A�a�5�	V�a�5�q�a�5�zga�5��LaK4�o\�b�5�l	gd6�&�d,6�A�f46�c�h<6���jL6���l�6���m�6���o�6�a	�q7��gr17��grW7�gr�7��r 8�4�sT8�g�u9�u�vX9���x�9���y�9���{l:�2�}x:�g�:�'�:�7��7�m^��"<�l	g�\<�l	�?=�}��G=����P=����x=�����=����=�
���=����=��g�`>�5g��>�E��D?�Tg�L?�h���?�g��?�7�0<�o\��B<�?c���A�l	g��A�����A���B�l	g�B��
�rB�:���B�R���B�j���B����B�����B�����B�����B�����B����B����B�-���B�6��C����C����C�O��C�a��$C�g��C�i��\D�����D�����D����/E����HE�����E��g��E��g��F����F�"��G�:��G�F��XG�^��`G�k��iG�x��qG��	�zG�����G��	��G��
	��G��	��G��g�iH�����H����H�2���H�D���H�`g�,I�l	g�@I��
��I�����I�����I�����I�����I�����I�����I����I��
��I�����I� ���I� s	�J� w	�
J�$ |	�J�4 �	�J�D �	�&J�Q �	�/J�^ ��7J�i ���L�l	g�@J��
��L��!���L��!���L�����L�����L��!���L�l	g��L��!]��L��!]��L��!8�3M��!�	�aM�"�rM�"�	�M�#"D��M�2"D��M�<"�	�$N�V"�	��O��
�}P�m"�	�P�{"���P�	�"���P�	�"���P�	�"���P�	�"�	��P�	�"�	��P�m"�	��P�#��P�!#��P�E#�	��P�`#�	�Q�j#�	�Q�	o#��
Q�|#�	�Q��#g�Q�	�#�	�Q�	�#�	�&Q�	�#��)Q�	�#��,Q�	�#��/Q�l	g�7Q�l	
�uQ��$��}Q��$���Q��$���Q��$��Q��$
��Q�	%���Q�%���Q�#%���Q�7%��@R�K%��HR�T%��WR�]%��lR�n%
��R�m"g�S�l	
�S��$��%S�]%��-S��%��6S�l	%
�LS��$��YS��$��gS��$�tS��$
��S�]%���S�	%���S�%���S�#%���S�7%���S�K%���S�T%���S��%-
�nT��%6
��T��%<
��T�l	g��T��
��T�&I
�+U��%R
�>U��%X
�UU�l	g�MU��
�]U�l	g��U�8&o
�V��%u
�(V��%{
�8V�m"�	�|V�O&�
��V�[&�
��V�h&g�XW��&g�X��&g�LX��&g��X��&g��Y��&g�[��&g��\�	'�
�P]�'g�,^�4'��P^�Q'g�x^�_'g��^�s'g��^��'�
�5_��'�
r_��'�
�_�l	g�V��ggW��ggW��gg%W��gg-W��gg�W�xhg�W��hg[_�Vl��_��
�_��'�
�_��'�
 `��'�L`�(�
	�`�l	g�`��
Sa�}(�`a�l	g
~a��(�
�a��(�
�a��(��a��(��a�)��a�)��a�2)g\b�O)��b�g�b�'�b�7�c����c���c�*�
�c�l	g�c�l	g�c�&��c�&*g!8d�0*g!�d�=*�!�d�^*�#Le�y*�%ge��*�'�e��*g)�g�
+�
)h�+g*Hi�0+�*qi�l+�
*�i�g,�i�',�i�7.�k��
0l�i-"0 l�y-"0�n��-00o�F:2�o��-E4/q��-T6aq�.[7�q�%.b8�q�:.k9r��
:lr�`.�:tr�p.�:}r��.�;�r��.�;�r�l	g<�r�l	g<�r�&�<Us��.�>hs�g@�s�'@�s�7BRt�l	gD�t��.�D�t�W/�F�t��/�Hv��/�JDv��/�K�v��/�M�v�gN�v�'Nw�7P�x�l	gR�x�1�R�x�)1�R�x�31�S�x�<1�S�x�l	gT�x�&�Ty�gV8y�'VDy�7X�y��1�Zz��1�[Nz��1�\Vz��1�\_z�l	g]gz�l	�]vz�*�
^�z��
_�z�l	g_r{�2�_u{�-2�_�{�<2�a�{�t2cH|��2
e�|��2g }��2h�}�gi�}�'i�}�7k�~�l	gm�~��3�m�~��3goy��&*go���goԀ�'o��7q����3]s���-4�sЁ�H4]s"��[4�s/��q4�sF���
sH��l	gsp���3�s�����u�����wl��~4�x���4�y����4g{X��4�|���g�~L���4����u�����������2��܈��4q�p���4x����g���'���7�>���y������z����l	g�w��~4g����-4�����H4]����3]�����5�����5��P��2������4q�4���4x�t��g����'����7���l	g�D��w7g�����7������7�����7�����7��`���7����	8g���8�����g���'����7�ܓ�F8����U8����f8��"��w8��*���8��3��l	g�<��F8��q��9��y��9�����'9�����>9�����l	g�����1������9������1�����9��&��:��9��l	g�-���
�A��l	g�_���7��|��g����'����7�k��l	g����������@:��Ж�X:��8���:��\���:��ܗ��:����?;��.��J;��<��T;��H��t;��,���;��l���;
����g�ؙ�'���7�P�����s����z��*�
�}��l	g�����<
�����<
����l	g�l���<��(��=-
����K=4
�|��[=g����j=<
�ܟ�=*�����^*����}=������=A
����=��h��l+�
�ã�>��У�g���'���7����
�D��l	g�ަ��>�����>��ب��7����g�@��'�L��7���l	g�2��&��L��y?g���?T
|���?���g8��'D��7��l	g	,��&�	z���.����y?g
h��6@�
���gЯ�'ܯ�7����
���l	gܰ�y?g���g��'���7���l	gu���.����y?gt��6@����@����W/����gȵ�'Ե�7!���l	g#����A�#���A�%���A�'��&�)����Aa
+ظ�Bg
+��g,$��',0��7.;��l	�0�hBn
1J���!�1R��l	t
1b��hBn
3t��l	z
3���hBn
5���l	g5����B�5#���B�7+��&*g9l��g9���'9���7;���l	g=Ľ�C�=���6C�?��PC�A���rC�C|��gE���'E���7G^��l	gI����B�I���D�K���1D�M���QDgO`��aDgO���pDgO���~DgO����DgO���DgO|��gO���'O���7Q���l	gS ��gSP��'S\��7U��l	gW4���DgW����D�W����D�Y��g[0��'[<��7]{��l	g_���7E|	_���GE�	_���WE�`���lEgb���wE|	b����E|	b����E|	b<���E|	b����E�
b����Ege@���B�e@��ggp��'g|��7i����
kc���F�kp��l	gm����F|	m����F�	m����F|	n����F�	n����F|	o����F�	o����F�p	��G�p��gq<���Fgq����
q���l	gq���FgqT��=G�qb��cG�sp���G�u~���G�w����G�y���H{P��,H�
}���g~���'~���7�:���
�<��l	g�����.�����y?g����H�����H����6@��*���H��@��Ig���Ig����g����'����7�'��l	g�Q���.�����VI�
����jI�
����~I�
����I������I������I��K���I�
�k��JA
�����7�����GJ�
�L��g�|��'����7�4���J�`���9�����:�����l	g����l	�����<K�
����OK�
����bK����uK��8���K��l��l	g����&�����K�����Kg�����K�
����g���'�$��7����$L
����l	g����)L
����2L�����;L�����hL����zLg����l	g����l	g�����L#�����L)�����L/�����LB����(ML����9MW���JMc�F��cMn�P��l	g��(�l	g��(�-W���(�eW���,�l	g��,�Y���^�l	g��^�"le�n��l	g�v���zg�3��l	g�;��|g�"��l	g�*������sMyM�MsMyM�M�MsMsMyM�M�M�M�M�MsMyM�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�MN!N(N*N*N��M!N(N�M�M�M�M0N0N��M0N0N��M0N0N����M�M�M0N0N��M0N0N�_h�M�M�M0N0N�����M�M�M�M8N(N(N�M:N�!N(N!N(N!N(N!N(N!N(NBN!N(N!N(NMN�M!N(N\N!N(NpN!N(N!N(N!N(N�N�N�N�N�M�NBN�M!N(N!N(N!N(N!N(N!N(N�N!N(N�N�N$Y(N$Y(N�M�N�N�N�M�N�N�N�M�M�M�M�M�M�M�M!N(N!N(N�N�N�N�N�N�M�M�M�M!N(N!N(N!N(N!N(N�M�M�M�M�M�M�M�M�M�M�M�NOO�M�MOO�MO�MOO"O&O/OO3OFO���M�M�M�M�MIOTOFO��MTO_�M�M�M�M�MIOOO�MIOOO�MOO�MOTO_YOdO:N�N8N:N8N:N:N�M8N(N!N(N8N(N�M�M�M!N(N�N�N�N�N�M�N�N�N�M�N�N�NjO!N(N!N(N!N(N!N(N!N(NzO!N(N�N�N�N�N�O�O�O�O�O�O�O�O�O�O�M�M!N(N!N(N�N�N�N�N!N(N!N(N!N(NO�OdOO�N�N�N�N�M�M!N(N�N�N�N�N�O�O�M�OjO!N(N!N(N!N(N!N(N�O�O�N�N�N�N!N(N�N�N�N�N!N(N!N(N�M�O!N(NP!N(N\N�N!N(NpN!N(N(NPP�N�N�N�N�M�M!N(N!N(N!N(N(NPP�N�N�N�N!N(N!N(N�MPPP"P!N(N�N�N�N�NO&P�M�MO&P�M�M�O!N(N�O�M�N�N�N�M�N�N�N!N(N�N�N�N�N(N!N(N!N(N!N(N!N(N!N(N8N!N(N0P?P?P�N�N�N�N�M�N�N�N�M�N�N�NjO�MFP`P!N(N!N(N!N(N!N(N!N(N!N(N!N(N�N�N�N�N!N(N!N(N�N�N�N�N!N(N!N(N!N(N�N�N�N�N!N(N!N(N!N(N�N�N�N�N�N�N�N�N!N(N!N(N!N(N!N(N�N�N�N�N!N(N!N(N!N(N!N(NB�N�N�N�N\B\BrB\BB!N(N!N(N�N�N�N�N!N(N!N(N!N(N!N(N�N�N�N�N!N(N!N(N!N(N�N�N�N�N�N�N�N�N!N(N!N(N�N�N�N�N�M!N(NdO�MmP!N(N�N�N�N�N8N(N�M�M�M�M!N(N!N(N!N(N!N(N!N(N!N(NwP�N�N�N�N!N(N!N(N!N(N!N(N!N(N�N�N�N�N!N(N�M!N(N!N(N!N(N!N(N!N(N!N(N�N�N�N�N�N�N�M�N�N�N�M�N�N�N�P�M��!N(N!N(N��P�N�N�N�NO�P�M�P�N�P�N�N�P�N�M�N�N�N�N�P�N�N!N(N!N(N$Y(N8Nˇ!-159%&!'*+-/12358!9:;!<>?@ABCGHIJKLNOPPMQ!S1iA��A��i)l	g1l	�9l	�Al	�Il	�Ql	�Yl	�al	�il	�ql	�yl	��l	��l	��l	y�l	��l	��l	��l	��l	g�l	t
l	g�l	g�rS���S]��S���S���S��
T��T��"T��TT�zg��T�zg��T�	!�T�����T�)�%��l	���T��Ug�U��$U��OU��l	g�aU��jU���U���U�	�U�	�U���U��T��U���UW�l	*��U6�V��?V=NV��%D�%J1jU��gVP�uV���V���VW�l	g�l	gQl	���Vd��V���V���V�Y�W�il	���W�ql	���W��X�	�Xg�X�.X��l	g!FXg�TX�l	�$�%J�U�,l	�,�U�4l	�4�U�<l	��NV��TX�4jXJuX�<�U�jXJ,jXJ<jXJ��Xg��X�!�Xg��Xg$l	�$�X!$�U�$NV���X1��X|	�X8�X?l	K�HYVaRY��Xg��Xg�T��l	��l	d�l	g��Yl�Y�	�l	��Zg��X~�l	��)Z��DZ���%��IZ2�l	g�fZ��vZ�	����Z�	�Z���Z��Z�!�Z�)l	���X�9�Zt
A6[�QE[��X[gY�[�yl	�!l	��9M��[�l	�D�U��9M��l	gL�U��9Ml�9Mt�\��l	��l	�9Y\�Ab\�1l	�	)l	g�l	�I�\�)��1�\�)�\���\���\���\�Ig)�\���\��]��]��+]�Tl	���'	��]�] ��]&��].��<\l	���]g�^P\^Y\^��+^P\�FY�J^
!^^u��^V��^�Y�[|��F���^���^���^�a�^�l	g	l	g	K_��_��_�	�_��_g!l	�)l	g)`�)`�)"`�)A`��^�IT`�	y`�d�%JI�`�Q�`�	dNV��%J��`���`�i�`�Y�`�al	�ia�Q"a�!.a�!=a|	�Ha|	qda��ja�	yl	g�l	t
Yl	/	�a7�JME�l	P�b��(b��l	��qb`�l	���bg�l	�I�bn�l	���bu�c��$c����9l	g�c���c<��c���c���c�	�����c��l	���c��d�y	d��d��dg�X[g�ed��l	���d��"`�y�d�	�d�		�F�	l	��d�!l	��
e�)l	��l	�	I5e�1l	�9le�����e�AzgI�e��e�Q�%�Qzg9�e�	Ad�Ad���e���e�
�f�!
f��d�9$f�	2f�	>f��Mf�$Wf�Q�U�I_f�	!pf�Yl	ga�f�i^Pa�f�I�f��!���f��l	gIl	g�f8�f1qda?1l	g1y`Jq�UP1*gZ��%`1Cgf��Ul�Lg}�Tg}9�Al	��l	gQl	gQNV��l	�Q�g�y�!�a�U�a�%�a�%�]�y[&�
����
e�yh&g�/h��Ch�Yh���Z��l	��hh�����h8�l	��h	i�X[g�i�l3i7t2fY�qiJ!�i�!�i|	I�i|	��iQ�d�I���TW	�i]t�i�|3i7�2fY9�i�9�i�I�i|	��i��3i7�2fY	1�!Kj�!	�j�1	�j���j����1�!�	�j]	�j���i�1	
k1	,k
)	RkQ	~k��
k1Rka	~k���%J!�k��T:�NV���]g��kQ��kg��kg�l`��NW�l	g�l`�l	g��NW�"lei	l	��Gl���U�yl	g�l	�9hl�q	l	�y	l	���l��1��	�l���l���l�Ym�Ym��l	g�	-m�ISm��	�%��f8�a�e�aam�zm��	l	g�l	g�	���RkQ	�m�I	�m���m�I�m��+^P��m���m��n�n�/n��Dng�Yn��l	g��n�3i%�2fY��U8q�n@�	l	g��n��	�c�	�	oF�	oMI6o�	�	UoT��U��ko�
�i��3id�2fz��F���oY��i�$l	g��o��3i%�2fY!
.X���%J!
�F|	��o�NV��p)
)p1
NV��;p�Kp��Qp��Wp �rp(��p���p(��p�1
3i.2fYA
�pByqby�F�Q
Ghy�F�	Iam��b��*q�Y
l	��cqm��q�l	g�U8�r�l	g�r�3i�$2fY�%��
�r�l	gI�r�	�U�$�i�,l	��rWf��
�r���r���r��s��2sG�
l	g�<sM�SsTl	g�jsZ�sa��sZ��sTl	g�sh�sotut��!t|!l	g�<t��Ft�)l	g1<s�12s�)ct�9l	g�<t��Ft�A�V�I�L�Q�t�	��t�4NV�al	�4�U���tg�/u�i@u��Lu�	�nu��{u���u�	l	g<�U��l	g��c�	�v�
3i

2f��%v�l	g�	���3v�	Dl	�Ll	�Tl	2��vE��UL��v��l	���vv�l	��
w}�(w��Aw�\aw�\�U8\l	gI	mw�Q	�U�	�|w���]���w��l	�!�w��w��w�	x�	*x�	7x��Dx�!�w��`x��sx���x���x��l	���x���x���x��y�l	��Ryl	���ya	UgY	mw�a	�y!�Ua	�tg)�y!�%��X���Ug�z�&z��9z�1^z(Iqz01l	��{z���z�A�z��z��l	gIUoTIoMI9{fQ'ly�^V�\{Va�{}il	g�l	Ki�{�i�{�iagi�{gi�{�	vI�_�	I�{���{��&|��A|��]|��z|���|�a�F��|��|��|�a�|�	�|8�|��|�Q	zg�}��}��0}��L}��i}���}�I�}�I^z�yl	���}��F8��B~��l	g�B~�l	���F���]�����~���~g��~��	�
I/��<�Ind�%Jd3i%l2fY��'��=�n�iNV���F���QUgQ�U���OQ�X�Q�tg�	l	��l	�I7�m�X��)
0*t�l	g�l	g
���
���
���	
l	g
‗
쀞	
���
l	g�������)���l	�	�d�	9���A�g�M��	zm�Y���j��
���t���������΁gy�>��Fc�|�	iDy��N	�F�	
�T�TZ1
l	��=�i�A�ga1�]� �m�yY�~��]g��r��w����.�	��(��.�����9
l	�����3i%t2fY�ۂ��������2��Q�r��	>���R��|l	g|�U�I
�� �l	g���g
���w	���g
�˃+ ��1 �	�����8 ����C�= �w�D �zgY
�US ���\ i
��]i
ӄq ��x 3i%�2fY�3i%���q"����x a�%� y
�%��|� Q	@�8 �
v�� �|�� �
�r� ���!�l	�q��!�|���g���g���g�…g�Ӆg����
�0!���	�dG!�7�P!�N�W!��F��e��l	�s�D�
��]!�
l	c!�
��]!zmp!������`��Ά��9�����U��������Tg!�b\�!��I#���1��	�m��
l	�9Q��!�g�i�
l	�����!�T�!�l	�$ه�!l	�!��
�d�!���!1�s	�;�)�!�!�
l	g�
��!�
Lj"�
hL�
�	"�
�"����0�"�
A���
[���
x���
��"�
����
Ɖ��
≯�
��!"�l	gl	q"I�L�"�\�"�\�"���"!cM�"�l	g#(- �$�(,,k0�PL����,:0e4�8�<�@�D
H%L4PETlX��#�(�_	�d	�i	�#�(�_	�d	���(�,�k���-\#`(d_	hd	li	p�t�x��#�(�_	,�
.�/$.�M$.s�#.��#.�@$.�".�[$.�d$.3�".;:#.;o#.C�#.K�#.S�#.[�#.c�#.k�#`�(��(��(��(��(��(c����]��0�����E�����l��"��~�Y	�E)�~I��i������������5��	�F)(I��i�F�������
�#�
�C�
�!	�(A	�(�
�(�
�0"�
�(�
�W�
��
�(�(#�(A�(C�(a�(c�(��(��(��(��(��(��(�(!�(A�(a�(�
�(�
�(�
�"�
�(�
�"�(!�(A�(a�(��(��(��(��(@�(����(��( �( � �W@�(��(��( � �(@�(@�@�W`�(��(��(��(��(��(�( �(@�(`�(��(��(��(��(�( �(��(�( �(@�(`�(a�(��(��(��(��(��(��(�( �(@�(`�(��(��(��(��(�( �(@�(`�(��(��(��(��(�(`�(��(��(��(�%�(�%�(�%�(�%�(`*�(�*�(�*�(�*�(�*�(+�( +�(@+�(�-�(�-��-��-�(�-�(�-�W�-�0�(0� 0�( 0�@0�(@0�W@0��1�(�1�(2�( 2�(�2�(�2��2�(�2�3�(3�3�W4�4�( 4� 4�(@4�W@4�@4�(�4�(�4�(�4�(�4�(@5�(@5�`5�`5�(�5�(�5��5�W�5�(6�(�7�(�7��7��7�(�7�W�7��7�(�8��8�(�8��8�(�8��8�(�8�W�;�(�;��;��;�(�;��;�(�;�W�;�(<�(d<+(`=�(`=��=�(�=��=�W�=�(�=��>�(�>�?�?�( ?� ?�W ?�(`?�(�?�(�?�(�?�(�?�( @�(@@�(`@�(�@�(�A�(�A�B�B�( B� B�( B�W�C�(�C�D�D�( D�( D� D�W�D�(!E�(�F�(�F��F�(�F��F�W�F��F�(�G�(�G��G�(�G��G�W�G�(�G��H��H�(�H��H�(�H��H�W�H�(�I�(�I��I��I�(�I��I�(�I�W`J�(`J��J��J�(�J��J�W�J�(�K�(�K��K�(�K��K�W�K��K�(�L��L�(�L��L�(M�M�(M�W�N�(�N��N��N�(�N�(�N�W�N��O�(�O��O��O�(�O�(�O�W�O� Q� Q�(@Q�(@Q�`Q�W`Q�(`Q��Q��Q�(�Q�(�Q��Q�(�Q�W�Q��R��R�(�R�(�R��R�W�R�(�R�S�( S�(`T�`T�(�T��T�(�T��T�(�T�W�W�(�W��W��W�(�W�W�W�(�W�@Y�@Y�(`Y�`Y�(�Y��Y�W�Y�(�Y�(Z�( [� [�(@[�(@[�`[�W`[�`[�(�[�(�[��[�W \�(@\�(`]�(`]��]��]�(�]��]�(�]�W�](�1Wk��'\s�������C^�����?|�����	8Es����c��%B����	J��%��Up�����7=GSw�������.Uag|����#/ap������ % c h ~ � � � � � !!$!(!8!j!w!�!�!�!�!("y"$	

 !-68AHJ P!Q"R%S(V)W,Y.[/\2]3_6a7c<e>fLgMhPlRmVn�
s�
x�
}�
}�
HJ�S}Z}a}g}pH��������'3>D(��V8��Bp>�u<�K�%�.u:	s���������+	�+	�1	
1	g7	�=	�C	�I	I	O	R!�V!�^!�c!(h!�v!�	{!�	��	�!��!����#�	$�$�*$�3$�	A$�	N$�i$�{$��%��%��%(�%��%��%��%��%��%��%��%(�%��%��%��%�&C
&_
&�
�)��)��)�T.t�.��.�r1�"�2�k3�w5��5}w5��5}�8��8��9��9��>N
l?�DF�	G�	#G�	'G�	+G���
�K�
�L6�L<		"1
2346587:9BCDGHIM!L!N#O#P%R'Q'V)U)W+[-Z-\/]/^1`3_3d5c5e7f7g9h9j;i;o=p=v?�A�A�C�C�E�E�G�G�I�I�K�K�M�M�O�O�Q�Q�S�S�U�U�W�W�Y�Y�[�[�]�]�_�_�a�a�c�c�e�e�g�g�i�i�k�k�m�m�o�o�q�su	wy
{}�������������"�$�#�'�&�(�)�*�,�+�.�-�/�0�3�2�7�8�=�>�d�e�f�g�h�i���������������������������������������������'�&�:�����������������������������������"D%�'*0+D-X/~1�2�3�5�889":B<n>~?�@�A�B�C�G�H�IJK,LJN~O�P�P�	Q�Q�S���������dI�.A����1ly��/[p���9t�����)� � J � � �!�
�9

g

��

BB8

	�


�

"

�*

@,$
	=

�SOZ

_

f_

�hS�

��)�h�	C� �	p�`�	����	Ċ��	�)(0/=<DCECFCX	Y	Z#[2\3]R��'��'��'��'��';=+;�;�=�=�;0;+;��6���(�����+�t��U� Y� ��!�����<Module>PivotGridDemo.exeInitializerDataSourcePivotGridDemo.PivotGrid.HelpersAsynchronousPivotInitializerAsynchronousPivotInitializerGeneratedDBAsynchronousPivotInitializerSampleOlapDBUpdateProgressCallbackDatabaseGeneratedCallbackDataSetFilledCallbackDatabaseHelperServerParametersSalesPersonCustomerOrderCategoryProductSalePivotGridDemoModulePivotGridDemo.PivotGridAsyncModeWindowDatabaseGeneratorAsyncModeStringsBooleanInverterConverterDataSourceDialogSummaryItemTypesHelperPriorityOutlookDataUserOutlookDataGeneratorBindingCollectionTaskRelationTasksCategoriesTasksWithCategoriesPivotGridCheckAllDemosFixturePivotGridDemo.TestsFieldAreaHelperCellTemplatesRoundConverterChartGeneralOptionsChartFactorySeriesTypeDescriptorConditionalSortBySummaryContextMenuFieldSummaryItemCustomLayoutPivotImageExtensionCustomAppearanceCellModeFilterPopupOLAPBrowserOLAPKPIMoonPhasePrintTemplatesCellTemplateSelectorFieldValueTemplateSelectorMoonPhaseImageConverterPrintOptionsFieldsCustomizationFieldListVisibleToCommandTextConverterCustomChartDataRowFieldValueExportRuleCustomGroupIntervalGroupIntervalSortBySummaryTotalsLocationSingleTotalSerializationLayoutSampleBaseResourceLayoutSampleMemoryStreamLayoutSampleOrderReportsProductReportsCustomerReportsMultipleTotalsGroupsDashboardSimpleGaugeControlSummaryDisplayModeTopValuesUnboundExpressionsFieldValueItemToBooleanConverterNamesControllerPrefilterProgramPivotGridDemoStartupResourcesPivotGridDemo.PropertiesGeneratedInternalTypeHelperXamlGeneratedNamespacemscorlibSystemEnumObjectMulticastDelegateDevExpress.Xpo.v13.1DevExpress.XpoXPObjectDevExpress.Xpf.DemoBase.v13.1DevExpress.Xpf.DemoBaseDemoModuleSystem.XamlSystem.Windows.MarkupIComponentConnectorDevExpress.Xpf.Core.v13.1DevExpress.Xpf.CoreDXWindowPresentationFrameworkSystem.Windows.DataIValueConverterSystem.Windows.ControlsControlSystem.CollectionsCollectionBaseSystem.ComponentModelIBindingListIListICollectionIEnumerableDevExpress.Xpf.DemoBase.DemoTestingCheckAllDemosFixtureWindowsBaseSystem.WindowsDependencyObjectMarkupExtensionDataTemplateSelectorIStyleConnectorDemoStartupInternalTypeHelpervalue__OlapCubeTableDataSourceDefaultFieldWidthadventureWorksFileNameDevExpress.Xpf.PivotGrid.v13.1DevExpress.Xpf.PivotGridPivotGridControlAsyncCompletedHandlerInitialize.ctorget_PivotGridset_PivotGridget_InitializationCompletedCallbackset_InitializationCompletedCallbackget_AdventureWorksSampleFileNameGetAdventureWorksSampleFileNameget_OLAPSampleConnectionStringResetPivotGrid<PivotGrid>k__BackingField<InitializationCompletedCallback>k__BackingFieldPivotGridInitializationCompletedCallbackAdventureWorksSampleFileNameOLAPSampleConnectionStringSystem.DataDataSetSetDataSourceGeneratedDatabaseAsyncOperationResultInitPivotLayoutGeneratedDBPivotGridFieldFieldAreaCreatePivotGridFieldYearFieldNameCategoryFieldNameTotalCostFieldNameFreightFieldNameQuantityOrderFieldNameInitPivotLayoutSampleOlapDBExpandAllInvokeIAsyncResultAsyncCallbackBeginInvokeEndInvokeRandomrandomBackgroundWorkerworkerNamesLastNamesAdjectivesProductNamesCategoryNames.cctorget_IsGeneratingGenerateDatabaseAsyncCancelDatabaseGenerationAsyncDoWorkEventArgsGenerateDatabaseAsyncCoreSystem.Collections.GenericList`1GeneratePeopleNamesGenerateProductNamesGenerateNameGenerateProductNameDecimalGetProductPriceDateTimeGetDateGetDataSetAsyncGetDataSetAsyncCoreCalculateRecordCountTestConfigurationIsGeneratingServerParametersFileNamefInstanceget_InstancefServerfLoginfPasswordfUseWindowsAuthenticationget_DBNameget_Serverset_Serverget_Loginset_Loginget_Passwordset_Passwordget_UseWindowsAuthenticationset_UseWindowsAuthenticationLoadParametersSaveParametersGetServerConnectionStringGetDBConnectionStringIsParametersCorrectInstanceDBNameServerLoginPasswordUseWindowsAuthenticationnameSessionget_Nameset_NameXPCollection`1get_OrdersNameOrderssalesPersoncustomerdateget_SalesPersonset_SalesPersonget_Customerset_Customerget_Salesget_Dateset_DateSalesDateget_ProductsProductscategorypriceget_Categoryset_Categoryget_Priceset_PricePriceorderproductquantityunitPriceget_Orderset_Orderget_Productset_Productget_Quantityset_Quantityget_UnitPriceset_UnitPriceQuantityUnitPriceWeakReferencePivotDependencyPropertyPivotGridControlPropertyDependencyPropertyChangedEventArgsOnPivotGridControlChangedRaiseIsPopupContentInvisibleChangedget_PivotGridControlset_PivotGridControlOnApplyTemplateEnsurePivotFrameworkElementIsPivotOnLoadedGetModuleDataContextget_NeedChangeEditorsThemeCanLeaveClearShowPrintPreviewNeedChangeEditorsThemeTableConnectErrorOlapConnectErrorisDataBaseGeneratorRunnedcurrentDataSourcelastSplitterYPresentationCoreRoutedEventArgsPivotGridDemoModule_LoadedpivotGrid_AsyncOperationCompletedpivotGrid_AsyncOperationStartingbtnGenerateTableData_ClickRunDBGeneratorradioOlapCube_CheckedradioTableDataSource_CheckedDisableControlsEnableControlsShowErrorInfoProcessAsyncResultPivotCellEventArgspivotGrid_CellDoubleClickPivotDrillDownDataSourceShowDrillDowngrid_ColumnsPopulatedGetHeaderTextSystem.Windows.NavigationRequestNavigateEventArgsHyperlinkOlap_RequestNavigateSizeChangedEventArgsOnPivotGridSizeChangedPivotOlapExceptionEventArgsOnPivotGridOlapExceptionDemoModuleControlmoduleControlRadioButtonradioOlapCuberadioTableDataSourceButtonbtnGenerateTableDataTextBlocktbOlappivotGridPivotExcelFieldListControlfieldList_contentLoadedInitializeComponentDelegateType_CreateDelegateSystem.Windows.Markup.IComponentConnector.ConnectConnectUserControlget_DemoStringset_DemoStringrdWindowsAuthentication_CheckedrdSqlServerAuthentication_CheckedTextChangedEventArgstbRecordsCount_TextChangedbtnExit_ClickbtnGenerateDatabase_ClickGenerateRecordsUpdateProgressOnDatabaseGeneratedbtnTestConfiguration_ClickLabellblRecordsCountProgressBarprogressBar1textBlock1TextBoxtbServerlabel5label6tbLoginPasswordBoxpbPasswordlabel7tbRecordsCountbtnGenerateDatabasebtnExitGroupBoxgroupBox1rdWindowsAuthenticationrdSqlServerAuthenticationlabel2lblDBNamebtnTestConfiguration<DemoString>k__BackingFieldDemoStringGeneratingRecordsRecordsCountSystem.GlobalizationCultureInfoConvertConvertBackConnectionStringNameCatalogsComboNameCubesComboNameUserNamePasswordNameConnectButtonNameCubeEditNameServerRadioNameTextCubeFileNameCubeRadioNameIsCatalogsRetrivingPropertyIsCubesRetrivingPropertyDevExpress.PivotGrid.v13.1.CoreDevExpress.XtraPivotGrid.DataOLAPMetaGettermetaGetterget_IsCatalogsRetrivingset_IsCatalogsRetrivingget_IsCubesRetrivingset_IsCubesRetrivingDevExpress.Xpf.EditorsComboBoxEditget_CatalogsComboset_CatalogsComboget_CubesComboset_CubesComboTextEditget_ConnectionStringset_ConnectionStringget_Userset_UserPasswordBoxEditget_ConnectButtonset_ConnectButtonEditValueChangedEventArgsOnCatalogsComboEditValueChangedCatalogOrCubeEmptyIsCatalogEmptyClearComboOpenCubeFileRetriveCatalogsAndCubesUpdateControlsGetConnectionStringGetConnectionStringCoreShowMessageInitComboBoxButtonEditget_CubeEditset_CubeEditget_AnalysisServerRadioset_AnalysisServerRadioget_CubeRadioset_CubeRadioget_TextCubeFileset_TextCubeFileApplyPlatformTemplateCubeEdit_EditValueChangedCubeEdit_DefaultButtonClickCubeRadio_CheckedAnalysisServerRadio_CheckedRetriveCubes<CatalogsCombo>k__BackingField<CubesCombo>k__BackingField<ConnectionString>k__BackingField<User>k__BackingField<Password>k__BackingField<ConnectButton>k__BackingField<CubeEdit>k__BackingField<AnalysisServerRadio>k__BackingField<CubeRadio>k__BackingField<TextCubeFile>k__BackingFieldIsCatalogsRetrivingIsCubesRetrivingCatalogsComboCubesComboConnectionStringConnectButtonCubeEditAnalysisServerRadioCubeRadioTextCubeFileDevExpress.Data.v13.1DevExpress.DataSummaryItemTypeSummaryItemTypesFieldNamesLowBelowNormalNormalAboveNormalHighUsersget_OIDset_OIDget_Subjectset_Subjectget_Fromset_Fromget_Sentset_Sentget_HasAttachmentset_HasAttachmentget_Sizeset_Sizeget_HoursActiveset_HoursActiveget_Priorityset_Priorityget_UserIdset_UserId<OID>k__BackingField<Subject>k__BackingField<From>k__BackingField<Sent>k__BackingField<HasAttachment>k__BackingField<Size>k__BackingField<HoursActive>k__BackingField<Priority>k__BackingField<UserId>k__BackingFieldOIDSubjectFromSentHasAttachmentSizeHoursActiveUserIdget_Idset_IdToString<Id>k__BackingField<Name>k__BackingFieldIdrndSubjectsGetSubjectGetFromGetSentDateGetSizeGetHasAttachmentGetPriorityGetHoursActiveGetFromIdCreateNewObjectDataTableCreateOutlookDataTableOnListChangedAddNewget_AllowEditget_AllowNewget_AllowRemoveListChangedEventHandlerlistChangedHandleradd_ListChangedremove_ListChangedListChangedEventArgsOnRemoveCompleteOnInsertCompletePropertyDescriptorAddIndexListSortDirectionApplySortFindget_IsSortedRemoveIndexRemoveSortget_SortDirectionget_SortPropertyget_SupportsChangeNotificationget_SupportsSearchingget_SupportsSortingAllowEditAllowNewAllowRemoveListChangedIsSortedSortDirectionSortPropertySupportsChangeNotificationSupportsSearchingSupportsSortingfIDfNamefDatefPercentCompletefCompletefNotefRelationCollectionget_IDget_TaskNameset_TaskNameget_DueDateset_DueDateget_Completeset_Completeget_PercentCompleteset_PercentCompleteget_Noteset_Noteget_CategoryNameGetCategoryByTaskIDTaskNameDueDateCompletePercentCompleteNoteCategoryNameset_CategoryNamefTaskfCategoryMaxTasksGetTasksget_Itemset_ItemItemMaxCategoriesGetCategoriesfTasksfCategoriesGetTasksWithCategoriesHasCategoryCanRunModuleCreateCheckOptionsActionCreateCheck1AddCheck0ExportActionTextBlockTextTrimmingB185312AssertTextEditsWidthB185051AssertHeadersFilterButtonVisibilityB183058GetIsFilteredComboBoxItemsEditableB181973ChartGeneralOptionsConditionBestFitActionHidePrefilterActionShowPrefilterActionFindAllElementsTaddItemFindElementFixAreasPropertyGetFixAreasSetFixAreasOnFixAreasPropertyChangedPivotFieldAreaChangingEventArgsOnPivotFieldAreaChangingIsCellTemplateVisiblePropertyIsCellValueVisiblePropertyIsCellShareVisiblePropertyOnCellTemplateVisiblePropertyChangedget_IsCellTemplateVisibleset_IsCellTemplateVisibleget_IsCellValueVisibleset_IsCellValueVisibleget_IsCellShareVisibleset_IsCellShareVisibleOnCellTemplateVisibleChangedTemplatesList_SelectionChangedListBoxEdittemplatesListfieldCategoryfieldProductfieldSalesfieldYearIsCellTemplateVisibleIsCellValueVisibleIsCellShareVisibleIServiceProviderProvideValueProductFilterValuesSetFilterSetSelectioncbChartType_SelectedIndexChangedceShowPointsLabels_CheckedoncrChartDataVerticalSelectedIndexChangedchartControl_BoundDataChangedConfigurePieDevExpress.Xpf.Charts.v13.1DevExpress.Xpf.ChartsPieSeriesGetPointsCountCheckWarningVisivilityIsProvideEmptyCellsPivotCustomChartDataSourceDataEventArgspivotGrid_CustomChartDataSourceDatacbChartTypeCheckEditceShowPointsLabelscrChartDataVerticalceChartSelectionOnlyceChartShowColumnGrandTotalsceChartShowRowGrandTotalsSpinEditUpdateDelayGridwarningChartDevExpress.Xpf.LayoutControl.v13.1DevExpress.Xpf.LayoutControlLayoutControlmainLayoutfieldProductNamefieldExtendedPricefieldOrderMonthfieldOrderYearChartControlchartControlXYDiagram2DTypeXYDiagram3DTypeSimpleDiagram3DTypeSimpleDiagram2DTypeDefaultSeriesTypeDictionary`2seriesTypesget_SeriesTypesCreateSeriesTypesComboBoxEditItemCompareComboItemsByStringContentDiagramNullable`1GenerateDiagramXYDiagram2DPrepareXYDiagram2DXYDiagram3DPrepareXYDiagram3DSeriesCreateSeriesInstanceCreateDiagramBySeriesTypeSeriesTypesget_DiagramTypeset_DiagramTypeget_DisplayTextset_DisplayText<DiagramType>k__BackingField<DisplayText>k__BackingFieldDiagramTypeDisplayTextpivotGrid_LoadedfieldMonthfieldSalesPersonfieldQuantityfieldDiscountPivotCustomSummaryEventArgsOnPivotGridCustomSummaryPopupMenuShowingEventArgsOnPivotGridShowMenuSetFieldSummaryTypeFieldSummaryTypeGetFormatCanSetFieldSummaryTypeDevExpress.Xpf.BarsBarManagerbarManagerBarCheckItemShowColumnGrandTotalHeaderShowColumnGrandTotalsShowColumnTotalsShowRowGrandTotalHeaderShowRowGrandTotalsShowRowTotalsShowGrandTotalsForSingleValuesShowTotalsForSingleValuesfieldUnitPriceBarItemLinkSeparatorSeparator1Separator2Separator3Separator4get_Fieldset_Fieldget_Typeset_Type<Field>k__BackingField<Type>k__BackingFieldFieldlayoutItemsfieldQuarterSystem.Windows.Media.ImagingBitmapImageimagesLoadImageGetImageget_ImageNameset_ImageName<ImageName>k__BackingFieldImageNameget_AllowSwitchingThemeOnModuleLoadedOnFocusedCellChangedPivotCustomCellAppearanceEventArgsOnCustomCellAppearancePivotCustomValueAppearanceEventArgsOnCustomValueAppearanceSystem.Windows.MediaBrushGetActualCellForegroundBrushGetActualCellBackgroundBrushfieldOrderQuarterfieldCategoryNamefieldCountryfieldOrderIDfieldOrderAmountAllowSwitchingThemeNoneTolalSelectedTotalSelectedOnPivotGridLoadedSetGroupFilterPivotGridGroupPivotGridGroup1PivotGridGroup2GetSampleCubeFileNamesampleFileNameDataSourceDialohHeightget_SampleConnectionStringget_SampleFileNamePivotConnectionStringIsSampleCubeInitPivotGriddialogOnShowConnectionClickDialogClosedShowMessageBoxShowOLAPErrorMessageEventArgsOnTimerTickVisualStateGroupShowErrorMessageGroupVisualStateShowErrorMessageHideErrorMessageBordererrorBordererrorTextshowConnectionButtonSampleConnectionStringSampleFileNamecbStatusGraphics_SelectedIndexChangedcbTrendGraphics_SelectedIndexChangedcbStatusGraphicscbTrendGraphicsfieldFiscalYearfieldFiscalSemesterfieldFiscalQuarterfieldInternetRevenuefieldGoalfieldStatusfieldTrendNewMoonWaxingCrescentMoonFirstQuarterMoonWaxingGibbousMoonFullMoonWaningGibbousMoonLastQuarterMoonWaningCrescentMoonDataTemplatedefaultCellTemplatedefaultValueTemplatedefaultHeaderTemplatedefaultCellTemplateSelectordefaultValueTemplateSelectorSaveDefaultTemplatesButton_ClickPivotCustomGroupIntervalEventArgspivotGrid_CustomGroupIntervalGetFracPartMoonPhaseFromIntCalculateMoonPhaseResetItemstemplatesList_SelectedIndexChangedfieldMoonPhaseSelectTemplateget_CellTemplateset_CellTemplateget_CellTotalTemplateset_CellTotalTemplate<CellTemplate>k__BackingField<CellTotalTemplate>k__BackingFieldCellTemplateCellTotalTemplateget_ValueTemplateset_ValueTemplateget_ValueTotalTemplateset_ValueTotalTemplate<ValueTemplate>k__BackingField<ValueTotalTemplate>k__BackingFieldValueTemplateValueTotalTemplateExceptionRoutedEventArgsimage_ImageFailedSystem.Windows.Data.IValueConverter.ConvertSystem.Windows.Data.IValueConverter.ConvertBackShowHideFieldList_ClickcustomizationStyle_SelectedIndexChangedOnAllowCustomizationFormChangedOnCustomizationLayoutsEditValueChangedSelectionChangedEventArgsOnCustomizationLayoutsPopupContentSelectionChangedDevExpress.Xpf.Editors.PopupsPopupListBoxGetListBoxIsListBoxOnCurrentLayoutEditValueChangedEnsureCurrentLayoutItemsFieldListAllowedLayoutsFieldListLayoutToFieldListAllowedLayoutsShowLayoutListGroupShowAdvancedOptionsHideAdvancedOptionscustomizationStyleShowHideFieldListGroupFrameadvancedOptionscurrentLayoutcustomizationLayoutsfieldOrderDayfieldOrderDayOfWeekfieldOrderDayOfYearfieldFirstNamefieldLastNamerowFieldValueExportRuleget_RowExportRuleset_RowExportRuleInitDiagramSystem.DrawingPointCreateSelectedPointsDateTimeMeasurementUnitSetMeasureUnitsCollapseValuesEncodeCategoryNamecbChartDateMeasureUnit_SelectedIndexChangedPivotFieldEventArgspivotGrid_FieldExpandedInGroupChangedcbRowFieldValuesExportRule_SelectedIndexChangedseCellZeroValueThreshold_EditValueChangedStackPanelspLayoutcbRowFieldValuesExportRuleseCellZeroValueThresholdcbChartDateMeasureUnitRowExportRuleProductNameCategoryAndProductCategoryEncodedselectedDemoget_SelectedDemocbGroup_SelectedIndexChangedcbGrouppivotGridField1pivotGridField2pivotGridField3pivotGridField4pivotGridField5SelectedDemoInitComboBoxesPivotFieldDisplayTextEventArgspivotGrid_FieldValueDisplayTextcbGroupInterval_SelectedIndexChangedcbGroupIntervalceProductIntervalfieldProductAlphabeticalfieldOrderDatecbField_SelectedIndexChangedcbFieldcbColumnTotalsLocationcbRowTotalsLocationcbSummaryType_SelectedIndexChangedcbSummaryTypeceShowColumnGrandTotalHeaderceShowColumnGrandTotalsceShowColumnTotalsceShowRowGrandTotalHeaderceShowRowGrandTotalsceShowRowTotalsceShowGrandTotalsForSingleValuesceShowTotalsForSingleValuesSystem.IOMemoryStreamcurrentLayoutStreamLoadSampleButton_ClickSaveLayoutButton_ClickRestoreLayoutButton_ClickSaveLayoutStreamRestoreLayoutrestoreLayoutButtonlayoutSamplesComboBoxfieldCompanyNamefieldProductAmountdescriptionGetStreamresourcePathstreamListBoxEdit_SelectionChangedorderIDFilter_SelectedIndexChangedreportsListgroupOptionsorderIDFilterfieldOrderFloatingContainerpopupContainerReportsList_SelectionChangedcbxShowCategories_CheckedComboBoxEdit_SelectedIndexChangedpivotGrid_CellDblClickgbxOptionsshowDrillDowncbxShowCategoriesspGroupingLayouttbGroupingLayoutcbeGroupingLayoutfieldAverageSalefieldMinimumSaleallStringcbeYear_SelectedIndexChangedcbeQuarter_SelectedIndexChangedSetTopCustomersSetTopProductsSetYearFilterResetValuesUpdateYearFilterUpdateQuarterFiltergbxFilteringcbeYearcbeQuarterisExpandedUpdateGroupsExpandedCollapse_ClickExpand_ClickButtonCollapseButtonExpandPivotGridGroup3get_SalesTargetset_SalesTargetpivotGrid_GridLayoutUpdateKPIsGetAverageTransactionGetSalesToLastYearGetSalesTargetGetSalesToTargetResetFieldResetdashboardListavgTransGaugesalesToLastYearGaugesalesToLastYearNAsalesToTargetGauge<SalesTarget>k__BackingFieldSalesTargetMinPropertyMaxPropertyValuePropertyValueStringFormatPropertyUpdateDisplayTextContentControltextControlget_Valueset_Valueget_Minset_Minget_Maxset_Maxget_ValueStringFormatset_ValueStringFormatValueMinMaxValueStringFormatcheckAllowCrossGroupVariation_CheckedcheckAllowCrossGroupVariation_UncheckedcheckHideEmptyVariationItems_CheckedcheckHideEmptyVariationItems_UncheckedcbSummaryDisplayType_SelectedIndexChangedOnCustomAppearanceFieldSummaryDisplayTypeFieldVariationCaptioncheckAllowCrossGroupVariationcheckHideEmptyVariationItemscbSummaryDisplayTypefieldDatefieldQuantity1checkTopValueShowOthers_CheckedcheckTopValueShowOthers_UncheckedseTopValuesCount_EditValueChangedSetFieldTopHideRowAreaFieldsseTopValuesCountcheckTopValueShowOthersget_NamesControllerset_NamesControllerCreateNamesControllerGetNewInvisibleBonusFieldbeExpression_ClickbtnAddField_ClickEditValueChangingEventArgsteBonusName_EditValueChangingpivotGrid_FieldUnboundExpressionChangedItemClickEventArgsremoveBonus_ItemClickcbSalesPersonteBonusNamebtnAddFieldbeExpressionfieldOrderCountfieldNewYearBonusfieldOrderCountBonusBarButtonItemremoveBonusSystem.Windows.Markup.IStyleConnector.Connect<NamesController>k__BackingFieldDefaultNameget_AvailableNamesset_AvailableNamesGetNextDefaultNameRegisterAvailableNameUnRegisterAvailableName<AvailableNames>k__BackingFieldAvailableNamesdeFromTo_EditValueChangedApplyPrefilterGetCriteriaDateEditdeFromDatedeToDateMainInitDemoGetDebugGetFixtureTypeForXBAPOrSLTestingApplicationCreateApplicationSetCultureInfoSystem.ResourcesResourceManagerresourceManresourceCultureget_ResourceManagerget_Cultureset_CultureCultureCreateInstanceSystem.ReflectionPropertyInfoGetPropertyValueSetPropertyValueCreateDelegateEventInfoAddEventHandlerpivotinitCompletedCallbackdataSourcevaluedataSetresultfieldNamecaptionareaobjectmethodpercentscallbackrowsCountupdateProgressCallbackdatabaseGeneratedCallbacksenderecountsessiondelementdemoStringdataSourceTypedrillDownDataSourcedrilldownColumnNamedelegateTypehandlerconnectionIdtargetcontrolrowsGeneratedtargetTypeparametercultureeditfileNamemessageitemslargeDatarowCountitemargsindexpddirpropertykeyrelationCollectionidcollectiontaskmoduleTypefieldserviceProviderseriesfirstsecondcomboBoxdiagramFilterseriesTypeshowPointsLabelsdiagramfieldSummaryTypeimageNameactualModeconnectionStringclosesender1e1phaseyearmonthdaycontainerincludeCurrentlayoutunitsParamArrayAttributecategoryNameareaIndexdisplayTypedefaultNameisGreaterapptypepropertyInfoeventInfoSystem.Runtime.VersioningTargetFrameworkAttributeSystem.Windows.ResourcesAssemblyAssociatedContentFileAttributeAssemblyTitleAttributeAssemblyDescriptionAttributeAssemblyProductAttributeAssemblyTrademarkAttributeAssemblyConfigurationAttributeAssemblyCompanyAttributeAssemblyCopyrightAttributeAssemblyCultureAttributeProductIDAttributeSystem.Runtime.InteropServicesComVisibleAttributeThemeInfoAttributeResourceDictionaryLocationAssemblyVersionAttributeAssemblyFileVersionAttributeSystem.DiagnosticsDebuggableAttributeDebuggingModesSystem.Runtime.CompilerServicesCompilationRelaxationsAttributeRuntimeCompatibilityAttributeArgumentExceptionCompilerGeneratedAttributeStringIsNullOrEmptyDevExpress.DemoData.v13.1.CoreDevExpress.DemoData.HelpersDataFilesHelperget_DataPathFindFilePathGetFullPathFileExistsFileAttributesSetAttributesConcatget_OlapConnectionStringPivotGridGroupCollectionget_GroupsSystem.Collections.ObjectModelCollection`1PivotGridFieldCollectionget_Fieldsset_DataSourceUIElementset_IsEnabledDataTableCollectionget_TablesSetDataSourceAsyncBeginUpdateset_SummaryTypeset_ShowSummaryTypeNameFieldGroupIntervalset_GroupIntervalset_Areaset_CaptionFieldUnboundColumnTypeset_UnboundTypeset_WidthAddRangeAddget_ExpressionFieldNameset_UnboundExpressionEndUpdateAsyncSetOlapConnectionStringAsyncset_OlapConnectionStringOLAPConnectionExceptionRetrieveFieldsget_CountFieldSortOrderset_SortOrderset_CellFormatset_VisibleExpandAllAsyncDoWorkEventHandleradd_DoWorkset_WorkerReportsProgressset_WorkerSupportsCancellationget_IsBusy<>c__DisplayClass2ProgressChangedEventArgs<GenerateDatabaseAsync>b__0RunWorkerCompletedEventArgs<GenerateDatabaseAsync>b__1get_ProgressPercentageProgressChangedEventHandleradd_ProgressChangedRunWorkerCompletedEventHandleradd_RunWorkerCompletedInt32RunWorkerAsyncCancelAsyncReportProgressget_ArgumentUnitOfWorkClearDatabaseNextXPBaseCollectionget_Objectop_ImplicitCommitChangesget_CancellationPendingFlushChangesIDisposableDisposeContainsFormatNextDoubleop_Explicitop_Multiply<>c__DisplayClass5<GetDataSetAsync>b__4sAsyncCompletedEventArgsExceptionget_Errorget_ResultComponentSystem.Data.OleDbOleDbConnectionOleDbDataAdapterSystem.Data.CommonDbDataAdapterFillset_ResultOleDbExceptionSystem.Data.SqlClientSqlConnectionDbConnectionOpenSqlCommandSqlDataReaderExecuteReaderDbDataReaderReadEmptySystem.XmlXmlDocumentLoadXmlElementget_DocumentElementXmlNodeop_Equalityget_InnerTextCharSplitToBooleanSystem.TextEncodingget_UTF8XmlTextWriterBooleanXmlWriterWriteElementStringSystem.Windows.InputCursorsCursorget_WaitMouseset_OverrideCursorCloseDXMessageBoxMessageBoxResultMessageBoxButtonMessageBoxImageShowPersistentAttributePersistentBaseXPBaseObjectGetCollectionAssociationAttributeNonPersistentAttributeRuntimeTypeHandleGetTypeFromHandlePropertyChangedCallbackPropertyMetadataRegisterget_NewValue<.ctor>b__0RoutedEventHandleradd_Loadedget_Targetget_IsPopupContentInvisibleset_IsFieldListVisibleGetValueSetValueget_DemoModuleControlget_ContentFindDemoContentset_DemoContentget_DemoContentPredicate`1DevExpress.Xpf.Core.NativeLayoutHelperFieldRowTotalsLocationget_RowTotalsLocationEqualsBestFitFindParentObjectWindowSystem.Windows.Controls.PrimitivesToggleButtonset_IsCheckedShowDialogGetValueOrDefaultget_HasValueget_IsCheckedDispatcherHelperDoEventsVisibilityset_Visibility<pivotGrid_CellDoubleClick>b__2get_Exceptionget_MessagePivotCellBaseEventArgsget_ColumnIndexget_RowIndexCreateDrillDownDataSourceAsyncget_RowCountDevExpress.Xpf.Grid.v13.1DevExpress.Xpf.GridGridControlTableViewset_AllowPerPixelScrollingDevExpress.Xpf.Grid.v13.1.CoreDataViewBaseset_ViewDataControlBaseset_ItemsSourceadd_AutoGeneratedColumnsPopulateColumnsFloatingContainerParametersset_AllowSizingset_CloseOnEscapeset_TitleDialogClosedDelegateset_ClosedDelegateAddLogicalChildGridColumnCollectionget_ColumnsGridColumnColumnBaseget_FieldNameBaseColumnset_Headerget_OlapDrillDownColumnNameget_CaptionUriget_Uriget_AbsoluteUriProcessStartInfoProcessStartset_Handledget_RenderSizeget_Heightget_FieldListSplitterYMathRoundset_FieldListSplitterYDebuggerNonUserCodeAttributeSystem.CodeDom.CompilerGeneratedCodeAttributeUriKindLoadComponentEditorBrowsableAttributeEditorBrowsableStateadd_CheckedButtonBaseadd_ClickSystem.Windows.DocumentsHyperlinkRequestNavigateEventHandleradd_RequestNavigatePivotOlapExceptionEventHandleradd_OlapExceptionSizeChangedEventHandleradd_SizeChangedPivotCellEventHandleradd_CellDoubleClickadd_AsyncOperationCompletedadd_AsyncOperationStarting<.ctor>b__1EventHandlerCS$<>9__CachedAnonymousMethodDelegate3GetWindowset_OwnerWindowStartupLocationset_WindowStartupLocationset_ShowInTaskbarset_Contentadd_PasswordChangedadd_Closedget_TextTryParseset_Textset_DialogResultXpoDefaultDevExpress.Xpo.DBIDataStoreAutoCreateOptionGetConnectionProviderSimpleDataLayerIDataLayerset_DataLayerParseRangeBaseset_MaximumTextChangedEventHandlerTextBoxBaseadd_TextChangedValueConversionAttributeop_InequalityInvalidOperationExceptionGetTemplateChildEditValueChangedEventHandlerBaseEditadd_EditValueChangedget_ConnectedTextEditBaseLookUpEditBaseget_SelectedIndexListItemCollectionget_Itemsset_EditValueset_ConnectedGetCatalogsget_Lengthset_AllowDefaultButtonget_EditValueget_Currentget_MainWindowget_TitleToArrayset_SelectedItemadd_DefaultButtonClickMicrosoft.Win32OpenFileDialogFileDialogset_FilterCommonDialogget_FileNameget_SelectedItemGetCubesget_TodayAddDaysDataColumnCollectionDataColumnDataRowNewRowDataRowCollectionget_RowsCombineRemoveListChangedTypeNotSupportedExceptionDefaultMemberAttributeget_ListMemberInfo<CreateCheck1>b__0<CreateCheck1>b__1<CreateCheck1>b__2<CreateCheck1>b__3<CreateCheck1>b__4BaseTestingFixtureIDemoBaseTestingget_DemoBaseTestingget_CurrentDemoModuleGetTypeActionAddSimpleAction<AddCheck0>b__5<AddCheck0>b__6DevExpress.Xpf.Printing.v13.1DevExpress.Xpf.PrintingPrintHelperIPrintableControlget_NowTimeSpanop_Additionop_LessThanget_OptionsContentEnumeratorGetEnumeratorDevExpress.Xpf.Editors.HelpersTextBlockServiceCalcIsTextTrimmedget_DesiredSizeget_Widthget_ActualWidthAssertLogget_AssertLogDoubleAssertIsFalseMoveNextEditModeget_EditModeget_IsPrintingModeDevExpress.Xpf.PivotGrid.InternalFieldHeaderFieldHeaderBaseget_IsMouseOverPivotGridFieldExtensionsPivotGridInternalFieldGetInternalFieldDevExpress.XtraPivotGridPivotGridFieldBaseget_ShowFilterButtonget_IsFilteredIsTrueget_IsFilterButtonVisibleget_GroupPivotGroupFilterModeget_GroupFilterModeFieldFilterValuesget_FilterValuesPivotGridFieldFilterValuesget_IsEmptyGroupFilterValuesPivotGroupFilterValuesget_IsTextEditableget_PrefilterContainerUpdateLayoutAndDoEventsShowPrefilter<>c__DisplayClass8`1<>4__this<FindAllElements>b__7ElementHandlerForEachElement<FindElement>b__aRegisterAttachedArgumentNullExceptionPivotFieldAreaChangingEventHandleradd_FieldAreaChangingFrameworkContentElementget_Parentget_UnboundTypeget_Areaget_NewAreaset_AllowNWindDataDataViewget_ProductReportsResourceDictionaryget_Resourcesadd_SelectedIndexChangedToInt32NotImplementedExceptionset_ValuesIncludedFieldFilterTypeSetValuesSetSelectionByFieldValuesget_Tagset_Diagramset_ChartProvideEmptyCellsget_Diagramget_SeriesTemplateset_LabelsVisibilityset_CrosshairEnabledset_ChartProvideDataByColumnsSimpleDiagram2DSimpleDiagram3DSeriesCollectionget_SeriesIEnumerator`1TitleCollectionget_TitlesTitleget_DisplayNameTitleBaseDockset_DockHorizontalAlignmentset_HorizontalAlignmentset_FontSizeVerticalAlignmentset_VerticalAlignmentset_ShowInLegendIEnumeratorKeyValuePair`2get_KeySeriesPointCollectionget_PointsSeriesPointIsNaNDevExpress.XtraPivotGrid.SelectionIMultipleSelectionget_MultiSelectionReadOnlyCellsget_SelectedCellsget_FocusedCellget_Xget_YGetCellInfoFieldValueTypeget_ColumnValueTypeget_ChartProvideColumnGrandTotalsget_RowValueTypeget_ChartProvideRowGrandTotalsUIElementExtensionsSetVisiblePivotChartItemDataMemberget_ItemDataMemberDBNulladd_UncheckedPivotCustomChartDataSourceDataEventHandleradd_CustomChartDataSourceDataadd_BoundDataChangedAreaFullStackedSeries2DAreaSeries2DAreaStackedSeries2DBarFullStackedSeries2DBarStackedSeries2DLineSeries2DPointSeries2DAreaSeries3DAreaStackedSeries3DAreaFullStackedSeries3DBarSeries3DPointSeries3DPieSeries3DPieSeries2DCompareToKeyCollectionget_KeysArrayIndexOfset_TagComparison`1SortDiagram3Dset_RuntimeRotationset_SeriesDataMemberset_ArgumentDataMemberset_ValueDataMemberSeriesLabelget_Labelset_LabelPointOptionsget_LegendPointOptionsset_LegendPointOptionsPointViewset_PointViewset_PointOptionsget_PointOptionsNumericOptionsset_ValueNumericOptionsget_ValueNumericOptionsNumericFormatset_Formatset_Precisionset_SeriesTemplateAxisX2Dset_AxisXget_AxisXAxisLabelAxisBaseset_StaggeredAxisX3DChartTextElementActivatorISupportTransparencyset_TransparencySortByConditionCollectionget_SortByConditionsSortByConditionEndUpdateDevExpress.Data.PivotGridPivotSummaryValueget_SummaryValueget_Summaryset_CustomValuePivotGridMenuTypeget_MenuTypeGetFieldInfoBarManagerActionCollectionget_CustomizationsIBarManagerControllerActionBarSubItemBarItemDevExpress.Data.MaskEnumHelperGetValuesBarItemLinkCollectionget_ItemLinksset_CommandParameterAction`1Func`2DevExpress.Xpf.Core.CommandsDelegateCommand`1ICommandset_CommandBarItemLinkBaseget_SummaryTypePivotCustomSummaryEventHandleradd_CustomSummaryPopupMenuShowingEventHandleradd_PopupMenuShowingAssemblyget_AssemblyImageHelperCreateImageFromEmbeddedResourceTryGetValueset_FilterTypeadd_FocusedCellChangedRoutedEventBrushChangedEventPivotBrushChangedEventArgsPivotBrushTypeRaiseEventset_Backgroundset_ForegroundPivotFieldValueEventArgsget_MaxIndexget_MinIndexget_IsColumnget_ValueSelectedBackgroundget_CellForegroundget_CellSelectedForegroundget_CellTotalForegroundget_CellTotalSelectedForegroundget_CellBackgroundget_CellSelectedBackgroundget_CellTotalBackgroundget_CellTotalSelectedBackgroundPivotCustomCellAppearanceEventHandleradd_CustomCellAppearancePivotCustomValueAppearanceEventHandleradd_CustomValueAppearancePivotGroupFilterValuesCollectionget_ValuesPivotGroupFilterValueget_ChildValues<InitPivotGrid>b__0RetrieveFieldsAsyncIsNullOrWhiteSpaceget_IsAsyncInProgressResourceHelperFindResourceStyleset_StyleShowDialogContentActivate<pivotGrid_CellDoubleClick>b__1GridViewBaseset_ShowGroupPanelset_ShowBorder<OnPivotGridOlapException>b__4System.Windows.ThreadingDispatcherObjectDispatcherget_DispatcherDispatcherOperationget_InnerExceptionVisualStateManagerGoToStateDispatcherTimerset_Intervaladd_TickStopremove_TickPivotKpiGraphicset_SelectedIndexset_KpiGraphic<>c__DisplayClass1<OnPivotGridOlapException>b__0get_PrintFieldCellTemplateget_PrintFieldValueTemplateget_PrintFieldHeaderTemplateget_PrintFieldCellTemplateSelectorget_PrintFieldValueTemplateSelectorget_Yearget_Monthget_Dayset_GroupValueToDecimalTruncateToDoubleset_AreaIndexset_PrintFieldCellTemplateset_PrintFieldValueTemplateset_PrintFieldHeaderTemplateset_PrintFieldCellTemplateSelectorset_PrintFieldValueTemplateSelectorget_IsInitializedPivotCustomGroupIntervalEventHandleradd_CustomGroupIntervalDevExpress.Xpf.PivotGrid.PrintingPrintCellsAreaItemCellsAreaItemget_IsTotalAppearancePrintFieldValueItemFieldValueItemScrollableAreaItemBaseDefaultFieldListFactoryIColumnChooserFactoryset_FieldListFactoryShowFieldListget_IsFieldListVisibleFieldListStyleset_FieldListStyleget_FieldListStyleget_IsLoadedget_AllowCustomizationFormObservableCollection`1get_SelectedItemsset_FieldListAllowedLayoutsPopupBaseEditHelperPopupBaseEditGetOkButtonListBoxEditorPopupBaseGetPopupPopupBaseget_PopupContentget_FieldListLayoutSelectionChangedEventHandleradd_PopupContentSelectionChangedset_ChartProvideRowFieldValuesAsTypeDateTimeOptionsAxisset_DateTimeOptionsset_DateTimeGridAlignmentset_DateTimeMeasureUnitAxisRangeset_Rangeget_Rangeset_SideMarginsEnabledAxisY2Dset_AxisYget_AxisYget_ColumnCountGetNameCollapseAllExpandValueToCharScaleTypeset_ArgumentScaleTypeget_DateTimeOptionsDateTimeFormatset_FormatStringget_ExpandedInFieldsGroupRefreshDataPivotChartItemTypeget_ItemTypeget_FieldValueInfoGetHigherLevelFieldValuePivotFieldEventHandleradd_FieldExpandedInGroupChangedReferenceEqualsget_Charsget_GroupIntervalget_ValueTypeReplacePivotFieldDisplayTextEventHandleradd_FieldValueDisplayTextget_SortByFieldset_SortByFieldFieldColumnTotalsLocationset_AllowCrossGroupVariationget_Visibleget_CustomerReportsBestFitColumnDevExpress.Xpf.DemoBase.HelpersDemoHelperGetPathSaveLayoutToStreamset_PositionRestoreLayoutFromStreamGetExecutingAssemblyGetManifestResourceStreamget_OrderReportsGetUniqueValuesset_TopValueCountFieldTotalsVisibilityset_TotalsVisibilityPivotGridCustomTotalCollectionget_CustomTotalsPivotGridCustomTotalSetAreaPositionThemeManagerget_ApplicationThemeNameSetThemeNameCreateDrillDownDataSourceIEnumerable`1set_ExpandedInFieldsGroupCeilingPivotDrillDownDataRowget_ValuesIncludedSystem.CoreSystem.LinqEnumerableCountGetFieldCountByAreaGetCellValuePowExpandAllRowsCollapseAllColumnsExpandAllColumnsCollapseAllRowsadd_GridLayoutDefaultStyleKeyHelperSetDefaultStyleKeyset_HideEmptyVariationItemsset_SummaryDisplayTypeget_SummaryDisplayTypeget_DataFieldop_GreaterThanOrEqualColorsColorget_BlueSolidColorBrushget_Redset_TopValueShowOthersget_UnboundFieldNameShowUnboundExpressionEditorget_UnboundExpressionget_IsEnabledget_DataContextEditValueChangingEventHandleradd_EditValueChangingadd_FieldUnboundExpressionChangedItemClickEventHandleradd_ItemClick<UnRegisterAvailableName>b__0availableNameRemoveAllget_DateTimeDevExpress.Data.FilteringCriteriaOperatorset_PrefilterCriteriaget_Ticksget_InvariantCultureIFormatProviderSTAThreadAttributeStartupBaseRunDevExpress.DemoData.v13.1DevExpress.DemoDataAssemblyMarkerLoaderset_DemoDataAssemblySystem.ThreadingThreadget_CurrentThreadget_CurrentCultureCloneNumberFormatInfoget_NumberFormatset_CurrencyDecimalDigitsset_CurrencyDecimalSeparatorset_CurrencyGroupSeparatorset_CurrencyGroupSizesset_CurrencyNegativePatternset_CurrencyPositivePatternset_CurrencySymbolset_CurrentCultureBindingFlagsBinderInvokeMemberPivotGridDemo.g.resourcesPivotGridDemo.Properties.Resources.resourcesPivotGridDemo.pivotgriddemo.manifestPivotGridDemo.Data.LayoutSamples.BriefView.xmlPivotGridDemo.Data.LayoutSamples.FullView.xmlPivotGridDemo.Data.EmbeddedData.txtWIncorrect InitializerDataSource enum value.dataSource%AdventureWorks.cub9Provider=msolap;Data Source=u;Initial Catalog=Adventure Works;Cube Name=Adventure WorksSalesPersonNameSales PersonCustomerNameCustomerQuantityUnitPriceUnit PriceOrderIDOrder IDCategoryNameCategoryProductNameProductOrderDate	YearMonthPrice[] * []S[Product].[Product Categories].[Category]C[Date].[Calendar].[Calendar Year]?[Measures].[Total Product Cost]3[Measures].[Freight Cost]7[Measures].[Order Quantity]CalendarProductsc2JuliaStephanie	Alex	John
CurtisKeithTimothy	JackMirandaAliceBlackWhiteBrownSmith
Cooper
Parker
Walker
Hunter
BurtonDouglasFoxSimpsonAncient
ModernMysteriousElegantRedGreen	BlueAmazingWonderfulAstonishing
LovelyBeautifulInexpensive
FamousMagnificentFancyIce CubesBicycle	DeskHamburgerNotebookTeaCellphone
ButterFrying Pan
NapkinArmchairChocolateYoghurtStatuetteKeychainBusinessPresentsAccessories	HomeHobby{0} {1}%Provider=SQLOLEDB;��select Orders.OID as OrderID, SalesPersonName, CustomerName, CategoryName, ProductName, Quantity, UnitPrice, OrderDate from orders join Sales on Sales.[Order] = Orders.OID join SalesPeople on Orders.SalesPerson = SalesPeople.OID join Customers on Orders.Customer = Customers.OID join Products on Sales.Product = Products.OID join Categories on Products.Category = Categories.OID
ordersgselect count(OID) as count from [{0}].[dbo].[Sales]count(local)saPivotGridDemoDB5PivotGridSQLParameters.xmlParameters{0};{1};{2}{data source={0};integrated security=SSPI;connection timeout=3{data source={0};user id={1};password={2};connection timeout=3/{0};initial catalog={1}AFailed to connect to the server.!Connection Error	Name
OrdersSalesPersonSales	DateOrder!PivotGridControlReturn to DemoStart Demo��A connection error occurred. Please make sure that you have provided proper connection settings.
To connect to OLAP cubes, you should have Microsoft SQL Server 2005 Analysis Services 9.0 OLE DB provider installed on your system.=Could not connect to OLAP cube��A connection error occurred. Please make sure that you have generated a data source and provided proper connection settings.ACould not connect to data sourceIDrillDown operation returned no rows9Drill Down Results: {0} Rows_/PivotGridDemo;component/modules/asyncmode.xaml50000+Generating records.../{0} rows is enough. {1}5Current record count = {0}{/PivotGridDemo;component/modules/windowdatabasegenerator.xaml9The target must be a boolean'IsCatalogsRetriving!IsCubesRetrivingCatalogsComboCubesCombo!ConnectionStringUserComboPasswordComboConnectInvalid cube.MThere is no catalogs in the cube file.Cube File
Server#;Initial Catalog=;Cube Name=CubeEdit'AnalysisServerRadioCubeRadioTextCubeFile1Cube files (*.cub)|*.cubDiscountExtendedPriceFreightTotalPeter DolanRyan FischerRichard FisherTom HamlettMark HamiltonSteve LeeJimmy Lewis#Jeffrey W McClainAndrew MillerDave MurrelBert ParkinsMike RollerRay ShipmanPaul BaileyBrad BarnesCarl LucasJerry CampbellOID	From	ToId	SentHasAttachmentPriorityHoursActive��Integrating Developer Express MasterView control into an Accounting System.��Web Edition: Data Entry Page. There is an issue with date validation.[Payables Due Calculator is ready for testing.]Web Edition: Search Page is ready for testing.��Main Menu: Duplicate Items. Somebody has to review all menu items in the system.yReceivables Calculator. Where can I find the complete specs?KLedger: Inconsistency. Please fix it.cReceivables Printing module is ready for testing.UScreen Redraw. Somebody has to look at it._Email System. What library are we going to use?aCannot add new vendor. This module doesn't work!gHistory. Will we track sales history in our system?mMain Menu: Add a File menu. File menu item is missing.��Currency Mask. The current currency mask in completely unusable.��Drag & Drop operations are not available in the scheduler module.cData Import. What database types will we support?QReports. The list of incomplete reports.��Data Archiving. We still don't have this features in our application.��Email Attachments. Is it possible to add multiple attachments? I haven't found a way to do this.��Check Register. We are using different paths for different modules.��Data Export. Our customers asked us for export to Microsoft Excel
{0}{1}, 
<None>	TaskCompetitorFavoritesGiftsGoalsHolidayIdeasInternationalPersonalAsyncMode#Text is trimmed: 
 text=, Name=, actual px, desired:px5TextEdit unlimited width:  desired #field.IsFiltered   expected
eal: \ %header.IsFiltered ;ComboBoxEdit items editable: GComboBoxEdit item is not selected: FixAreaselement+IsCellTemplateVisible%IsCellValueVisible%IsCellShareVisibleCellTemplateg/PivotGridDemo;component/modules/celltemplates.xaml	ChaiChocolades/PivotGridDemo;component/modules/chartgeneraloptions.xamlChangFilo MixGeitostIkuraKonbuMaxilakuPavlovaSpegesild	TofuTourti�re7Area Full-Stacked Series 2DArea Series 2D-Area Stacked Series 2D5Bar Full-Stacked Series 2D+Bar Stacked Series 2DLine Series 2DPoint Series 2DArea Series 3D-Area Stacked Series 3D7Area Full-Stacked Series 3DBar Series 3DPoint Series 3DPie Series 3DPie Series 2D
SeriesArguments
Values}/PivotGridDemo;component/modules/conditionalsortbysummary.xamlSummary Type	itemcpc/PivotGridDemo;component/modules/contextmenu.xamle/PivotGridDemo;component/modules/customlayout.xamlODevExpress.Xpf.PivotGrid.Images.{0}.pngGrains/CerealsMeat/PoultryProduceRobert KingSteven BuchananCellModem/PivotGridDemo;component/modules/customappearance.xamlBeveragesc/PivotGridDemo;component/modules/filterpopup.xaml3Cube Name=Adventure Works;[Product].[Product].[Product]+DataSourceDialogStyleOLAP ConnectionError

 !ShowErrorMessage!HideErrorMessagec/PivotGridDemo;component/modules/olapbrowser.xaml[/PivotGridDemo;component/modules/olapkpi.xaml;Phase must be between 0 and 7phaseheaderTemplatei/PivotGridDemo;component/modules/printtemplates.xamlc/PivotGridDemo;component/Images/MoonPhase/{0}.pnge/PivotGridDemo;component/modules/printoptions.xaml'HideAdvancedOptions'ShowAdvancedOptionsFieldListLayouts/PivotGridDemo;component/modules/fieldscustomization.xamlShow Field ListHide Field List)Category/ProductName1Encoded Product CategoryCondiments	yyyy Categoryk/PivotGridDemo;component/modules/customchartdata.xamlConfectionsDairy ProductsSeafoodEGroup Products by First Characters?Group Sales by Year and QuarterProduct GroupYear - QuarterShipped DateA-EF-ST-Z - s/PivotGridDemo;component/modules/customgroupinterval.xamlQtr {0}
 Total!Order Date ({0})g/PivotGridDemo;component/modules/groupinterval.xamlg/PivotGridDemo;component/modules/sortbysummary.xamli/PivotGridDemo;component/modules/totalslocation.xamlc/PivotGridDemo;component/modules/singletotal.xamlOriginalBrief viewCPivotGridDemo.Data.LayoutSamples.BriefView.xmlFull viewFullView.xmlg/PivotGridDemo;component/modules/serialization.xamle/PivotGridDemo;component/modules/orderreports.xamlDrill Down Formi/PivotGridDemo;component/modules/productreports.xaml(All)k/PivotGridDemo;component/modules/customerreports.xamli/PivotGridDemo;component/modules/multipletotals.xamlY/PivotGridDemo;component/modules/groups.xamlProductSales?!fieldYear.FilterValues.IsEmptyno sales_/PivotGridDemo;component/modules/dashboard.xamlMinMaxValue#ValueStringFormatPART_Text{0}{0:}Qty (Var)Qty (%)Qty (Rank)Qty (Index)Qtyq/PivotGridDemo;component/modules/summarydisplaymode.xaml_/PivotGridDemo;component/modules/topvalues.xamlNewBonus)UnboundFieldTemplate
field_q/PivotGridDemo;component/modules/unboundexpressions.xaml And {0} {1} #{2}#<=>=_/PivotGridDemo;component/modules/prefilter.xaml.,$EPivotGridDemo.Properties.Resources_CreateDelegateK�q�?B���5L�#�z\V4���T��1�8V�6N5Z	Y] Y] Y Y ] ]Y Y](Y(] a e imB[Date].[Calendar].[Calendar Year]R[Product].[Product Categories].[Category]>[Measures].[Total Product Cost]2[Measures].[Freight Cost]6[Measures].[Order Quantity]   qu q qu	 qauy}��	����<�� 4PivotGridSQLParameters.xml((( �� ��  	 ��4(	(��4,0��
 ��,0�� , , 0 0	 ��@ �� ��(,(0	(��@(��	 ��<	(��<8�� ��8�� 8 8 �� ��(8(��4< ��4<�� 4 4 < < (4(<(����A�� �� ��  (��A connection error occurred. Please make sure that you have generated a data source and provided proper connection settings.��A connection error occurred. Please make sure that you have provided proper connection settings.
To connect to OLAP cubes, you should have Microsoft SQL Server 2005 Analysis Services 9.0 OLE DB provider installed on your system.
 ��  �� ��  �� �� ������������	 ����  �� ������������*Generating records...4Current record count = {0} ���� ConnectionStringCatalogsComboCubesComboUserComboPasswordComboConnectCubeEdit&AnalysisServerRadioTextCubeFileCubeRadio��  � � � � �	 �	 �� �� �
  ��� � � �� �� �� �����	�(�(�(�	(��(�(��(���`h 
 
 
 
 ` `
(
(
(``d� � � �! �%	 �%�) �% �) �%(�)(�%p
 p����t tx tx���� t t(t���� x x(x������ | | tx(| �� i
0����0����0��AA�-�1i �5 �9 �=�A�E�I�M�Q���U����
�U����	�Y�Y
����]���a�e�i�m���]��
�U���� �� ��(�� �q �u �� �yi ���}���� i i �y �y�y(i(�y
�U���� �� �� ��������:[Product].[Product].[Product]X	 �a �� ������������I ��

�� �� ��A �� ��(���� �� �� ���� �������� �� ���?_�
: �� ��  ����(�� ���� �� �� ��  ����
(All) im�4�� �� �H �H �� �����H(�H ��	 ����(�� ��� ���	���	�����	��	 ����
 �
�� �
��
 ����
 ���	 �M�M �]�� ������ ����i �� � ] �� m �� i ��i
iiiiiiiiiiii mi ] m i  ��iiiii �� �� �� �� ���` ��,�� ��0��8��< ��=��������,��0��8��<4< 	����
������   ��}�d �� a
����a �� �� ������ � 	��� ���%�%
�1�5�9��SalesPeople
0
0��
4SalesPersonNameSalesPeople-Orders	CustomersCustomerNameCustomers-OrdersOrders��4
,
0
@ ����Orders-Sales	OrderDate
Categories
<CategoryNameCategory-Products
Products
8ProductName
Product-Sales
Sales��@  ����
Quantity	UnitPrice���Q �U�������Y�� �]�]Y �� �� ��	A��A A A�a�������a�� �i mA
�m �m�m�a �a L�a�a�a �y�1�� ]] �� 

 �������������������� ������	����i ������ ��
Y����#PresentationBuildTasks4.0.0.0 ������
���� �� �� �� �� �������mA �� ��	���� ����� �		 ���ـ�[System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089[System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089	���� A � �) 	�a� �m  �-�a	 ���'hhhhhhhhhhhhhhhhhh ��
��

d �9	 �=�� �A  �E �A	��A������ �! �I	Item 1 ��y��
����yx  �] �� �a
Y�����i �����m	����
Y����
������	 �q�q���� �y !���������q������
�����q� ���������q�
�������q����i �y"
Y������i�y�q�� �� �� �� �� ����
��������� ������ ���h
�h��	����	�h��
 �U �� �� m�� �� 	 ��  �] �] �m	�U�9 �����m	 �����m  �� �� �� ������ �	��9 �		�	�9  �
������V�U�9�9���9�	�9����9����m��9������m���
 � � �� �} �
 �����������}���������� �%�) �-�U����7�U�������������������������������� ���Y �i�i���� �m�m���� 	
���u�Y
 �u!���Y�Y�Y�����m���� �} �} �� �� �� �� �� �� �m�m�]�a �� �� �� �� �� ����	�m�� ������ i �� �� �� �������q�� � ������	�������� ���� �� �������q�y����������y �� �� ��	������	�U�� �� �� i��
 ��� �� ��
������ �������� �	 �
 � � m]�� ���	�a�������������� �)
 �-���l�� �m�5 �9���p I������
��	




 I �=�A�I ���M �U �Y �] �] �a���� �����������i�q�i ���������� �y ������ �} �� �� �� �� ���e ������
���� ���m�a�a�a�a �} ���e���������� ��	���� � i�� ���Y�Y 
�����q���Y��� ��  ����ii�Y��i�q���i�������q�yi�����ii��i�����
��������� ��  �� ������ ���y m�aA �����������am
������i��i������i


 ��
��
��
 m 







���q������� �� ���� ������i��i�a�Hi��i �� ���a
 �a�t
 �� ��	�����
�T���� �� ��  ����@3System.Resources.Tools.StronglyTypedResourceBuilder4.0.0.0 ���	������� ����� ����� ����� ��e).NETFramework,Version=v4.0,Profile=ClientTFrameworkDisplayName.NET Framework 4 Client Profile4/devexpress.build.xamlresourceprocessing.targetsthemes.wpf.targets-(DevExpress DXPivotGrid for WPF Main Demo#DevExpress DXPivotGrid for WPFDeveloper Express Inc.3.Copyright (c) 2000-2013 Developer Express Inc.DXPivotGrid
13.1.4.0TWrapNonExceptionThrowsbE�QU7RSDS�����S�O��I�T=>�c:\Projects\13.1\BuildLabel\Temp\NetStudio.v13.1.2005\WpfPivotGridDemo\PivotGridDemo\obj\Release\PivotGridDemo.pdbPVnV `V_CorExeMainmscoree.dll�% @0�X�p�������������0@P`p�(f�%Ћ�x�h�0�a����4VS_VERSION_INFO��

?DVarFileInfo$Translation��StringFileInfo�000004b0l)CommentsDevExpress DXPivotGrid for WPF Main DemoPCompanyNameDeveloper Express Inc.|)FileDescriptionDevExpress DXPivotGrid for WPF Main Demo4	FileVersion13.1.4.0DInternalNamePivotGridDemo.exe�/LegalCopyrightCopyright (c) 2000-2013 Developer Express Inc.hLegalTrademarksDevExpress DXPivotGrid for WPFLOriginalFilenamePivotGridDemo.exe`ProductNameDevExpress DXPivotGrid for WPF8	ProductVersion13.1.4.0<	Assembly Version13.1.4.0(0` ��������������������������	�

��
������������ �!! �##"�$$#*��������������������������	�	
	��
�

������������!! �""!�$$#�&&%�''&*��������������������������	�	
	�

�
�

������������  �""!�#$#�%%$�''&�(('���������������������������	
	�

��

������������  �!"!�##"�%%$�''&�(('�**)��������������������������	�

��

������������ �!! �##"�$%$�&&%�(('�**)�++*�������������������������	�

��
�������������!! �"#"�$$#�&&%�''&�))(�++*�--,���������������������������	�	
	��
�

������������ ! �""!�$$#�%%$�''&�))(�++*�,,+�..-�����565���������������������	�	
	�

�
�

������������  �""!�##"�%%$�''&�(('�**)�,,+�.-,�//.����������������������������	
	�

��

������������  �!! �##"�%%$�&&%�(('�**)�++*�--,�//.�10/�������������������������������	�

��
������������ �!! �##"�$$#�&&%�(('�))(�++*�--,�..-�00/�221���������������������������������	�	
	��
�

������������!! �""!�$$#�&&%�''&�))(�++*�,,+�..-�00/�210�332�����������������������������������	�	
	�

�
�

������������  �""!�#$#�%%$�''&�(('�**)�,,+�..-�//.�110�332�543���������������������ddd��������������	
	�

��

������������  �!"!�##"�%%$�''&�(('�**)�,,+�--,�//.�110�321�443�665�������������������������ddd������������	�

��

������������ �!! �##"�$%$�&&%�(('�**)�++*�--,�/.-�10/�221�443�654�776�����������������������������ddd����������	�

��
�������������!! �"#"�$$#�&&%�''&�))(�++*�--,�..-�00/�221�432�554�776�987���������������������������������ddd��������	�	
	��
�

������������ ! �""!�$$#�%%$�''&�))(�++*�,,+�..-�0/.�110�332�554�765�887�::9����������������������������������������������	�	
	�

�
�

������������  �""!�##"�%%$�''&�(('�**)�,,+�.-,�//.�110�321�443�665�887�:98�;;:�������������������������������������������������	
	�

��

������������  �!! �##"�%%$�&&%�(('�**)�++*�--,�//.�10/�221�443�665�876�998�;;:�=<;���������������������������������������������������	�

��
������������ �!! �##"�$$#�&&%�(('�))(�++*�--,�..-�00/�221�432�554�776�998�;:9�=<;�>>=����������������������������������������������������676�	
	��
�

������������!! �""!�$$#�&&%�''&�))(�++*�,,+�..-�00/�210�332�554�765�987�::9�<<;�>=<�@?>�~�����������������������������������������������������fgf�
�

������������  �""!�#$#�%%$�''&�(('�**)�,,+�..-�//.�110�332�543�765�887�::9�<;:�>=<�??>�A@?�0N�}���������������������������������������������������������������������  �!"!�##"�%%$�''&�(('�**)�,,+�--,�//.�110�321�443�665�876�:98�;;:�==<�?>=�A@?�BBA�/N�/O�c|�����������������������������������������������������>?>��������� �!! �##"�$%$�&&%�(('�**)�++*�--,�/.-�10/�221�443�654�776�998�;:9�=<;�>>=�@@?�BA@�DCB�/N�/P�/Q�Us������������������������������������������������������������������!! �"#"�$$#�&&%�''&�))(�++*�--,�..-�00/�221�432�554�776�987�::9�<<;�>=<�@?>�BA@�CCB�EED�/O�/P�/Q�.R�;^���������������������������������������������������������RSR����� ! �""!�$$#�%%$�''&�))(�++*�,,+�..-�0/.�110�332�554�765�887�::9�<;:�>=<�??>�AA@�CBA�EDC�GFE�/O�/P�.Q�.R�.S�-U���������������������������������������������������������������++*��  �""!�##"�%%$�''&�(('�**)�,,+�.-,�//.�110�321�443�665�887�:98�;;:�==<�??>�A@?�CBA�EDC�FFE�HGF�/P�/Q�.R�.S�.T�-U�-V�b�������������������������������������������������������������//.�##"�%%$�&&%�(('�**)�++*�--,�//.�10/�221�443�665�876�998�;;:�=<;�?>=�A@?�BBA�DCB�FED�HGF�JIH�/P�/Q�.R�.S�.T�-U�-V�-W�9c��������������������������������������������������������������vvv�&&%�(('�))(�++*�--,�..-�00/�221�432�554�776�998�;:9�=<;�>>=�@@?�BA@�DCB�FED�GFE�IHG�KJI�/P�.Q�.R�.S�-U�-V�-W�,X�,Y�,Z�`���������������������������������������������������������������zzy�887�,,+�..-�00/�210�332�554�765�987�::9�<<;�>=<�@?>�BA@�CCB�EDC�GFE�IHG�JJI�LKJ�/Q�.R�.S�.T�-U�-V�-W�,X�,Y�,Z�+[�+\������������������������������������������������������������������<<;�110�332�543�765�887�::9�<;:�>=<�??>�A@?�CBA�EDC�FFE�HGF�JIH�LKJ�NML�/Q�.R�.S�.T�-U�-V�-W�,Y�,Z�,[�+\�+]�+^�Es����������������������������������������������������������������������ggf�665�876�:98�;;:�==<�?>=�A@?�BBA�DCB�FED�HGF�JIH�KKJ�MLK�ONM�.Q�.R�.S�-U�-V�-W�,X�,Y�,Z�+[�+\�+]�*^�*_�*`�Du��������������������������������������������������������������������������TSR�=<;�>>=�@@?�BA@�DCB�FED�GGF�IIH�KJI�MLK�ONM�QPO�.R�.S�.T�-U�-V�-W�,X�,Y�,Z�+[�+\�+]�*_�*`�*a�)b�)c�_�����������������������������������������������������������������������������ZYX�CCB�EED�GFE�IHG�KJI�MLK�NML�PON�RQP�.R�.S�.T�-U�-V�-W�,X�,Z�,[�+\�+]�+^�*_�*`�*a�)b�)c�)d�(e�Cy����������������������������������������������������������������������������������UUT�LKJ�NML�PON�RQP�SRQ�.R�.S�-U�-V�-W�,X�,Y�,Z�+[�+\�+]�*^�*_�*`�)a�)b�)d�(e�(f�(g�'h�5r��������������������������������������������������������������������������������������������ihg�UTS�.S�.T�-U�-V�-W�,X�,Y�,Z�+[�+\�+]�*_�*`�*a�)b�)c�)d�(e�(f�(g�'h�'i�'j�&k�\����������������������������������������������������������������������������������������.S�.T�-U�-V�-W�,X�,Z�,[�+\�+]�+^�*_�*`�*a�)b�)c�)d�(e�(f�(g�'h�'j�'k�&l�&m�&n�%o�i�����������������������������������������������������������������������������.S�-U�-V�-W�,X�,Y�,Z�+[�+\�+]�*^�*_�*`�)a�)b�)d�(e�(f�(g�'h�'i�'j�'k�&l�&m�&n�%o�%p�%q�$r�i������������������������������������������������������������������.T�-U�-V�-W�,X�,Y�,Z�+[�+\�+]�*_�*`�*a�)b�)c�)d�(e�(f�(g�'h�'i�'j�&k�&l�&m�%n�%o�%q�$r�$s�$t�#u�#v�?��v��������������������������������������������������.T�-U�-V�-W�,X�,Z�,[�+\�+]�+^�*_�*`�*a�)b�)c�)d�(e�(f�(g�'h�'j�'k�&l�&m�&n�%o�%p�%q�$r�$s�$t�#u�#v�#w�"x�"y�"z�/��Y������������������������������������-U�-V�-W�,X�,Y�,Z�+[�+\�+]�*^�*_�*`�)a�)b�)c�(e�(f�(g�'h�'i�'j�'k�&l�&m�&n�%o�%p�%q�$r�$s�$t�#u�#v�#w�"x�"z�"{�!|�!}�!~� � � ��<���X��������������-U�-V�-W�,X�,Y�,Z�+[�+\�+]�*_�*`�*a�)b�)c�)d�(e�(f�(g�'h�'i�'j�&k�&l�&m�%n�%o�%q�$r�$s�$t�#u�#v�#w�#x�"y�"z�"{�!|�!}�!~� � �� �� �� �� �� �� ��-U�-V�-W�,X�,Z�,[�+\�+]�+^�*_�*`�*a�)b�)c�)d�(e�(f�(g�'h�'i�'k�&l�&m�&n�%o�%p�%q�$r�$s�$t�#u�#v�#w�"x�"y�"z�!{�!|�!}�!~� � �� �� �� �� �� �� ��-V�-W�,X�,Y�,Z�+[�+\�+]�*^�*_�*`�)a�)b�)c�(e�(f�(g�'h�'i�'j�'k�&l�&m�&n�%o�%p�%q�$r�$s�$t�#u�#v�#w�"x�"y�"{�!|�!}�!~� � � �� �� �� �� �� �� ��-V��-W�,X�,Y�,Z�+[�+\�+]�*_�*`�*a�)b�)c�)d�(e�(f�(g�'h�'i�'j�&k�&l�&m�%n�%o�%q�$r�$s�$t�$u�#v�#w�#x�"y�"z�"{�!|�!}�!~� � �� �� �� �� �� �� �� ���-VЫ-W�,X�,Z�,[�+\�+]�+^�*_�*`�*a�)b�)c�)d�(e�(f�(g�'h�'i�'k�&l�&m�&n�%o�%p�%q�$r�$s�$t�#u�#v�#w�"x�"y�"z�!{�!|�!}�!~� � �� �� �� �� �� �� �� ��-W�',X��,Y�,Z�+[�+\�+]�*^�*_�*`�)a�)b�)c�(e�(f�(g�(h�'i�'j�'k�&l�&m�&n�%o�%p�%q�$r�$s�$t�#u�#v�#w�"x�"y�"z�!|�!}�!~� � � �� �� �� �� �� �� ��� ��*,X�,YӨ,Z��+[�+\�+]�*^�*`�*a�)b�)c�)d�(e�(f�(g�'h�'i�'j�&k�&l�&m�%n�%o�%p�$r�$s�$t�$u�#v�#w�#x�"y�"z�"{�!|�!}�!~� � �� �� �� �� �� ��� �� ����( @ H�����������������	�

�
���������!! �##"�&&%H������������������	
	��

�������� ! �##"�%%$�(('������������������	
	��

��������  �""!�%%$�''&�**)�����������������	�

�
���������""!�$$#�''&�))(�,,+�TUT���������������	�

�
���������!! �$$#�&&%�))(�++*�..-����565��������������	
	��
��������!! �##"�&&%�(('�++*�--,�00/��������������������	
	��

��������  �"#"�%%$�''&�**)�--,�//.�221�������������������	�

�
��������  �""!�$%$�''&�**)�,,+�/.-�110�443����������������������	�

�
���������!"!�$$#�&&%�))(�,,+�..-�10/�332�665������������������������	�

�
���������!! �##"�&&%�(('�++*�.-,�00/�321�554�887���������������������������	
	��

�������� ! �##"�%%$�(('�**)�--,�0/.�221�554�776�::9����������������������������	
	��

��������  �""!�%%$�''&�**)�,,+�//.�210�443�765�998�<<;�����������������������������%&%�	�

�
���������""!�$$#�''&�))(�,,+�..-�110�432�665�987�;;:�>>=����������������������������������WXW�
���������!! �$$#�&&%�))(�++*�..-�00/�332�654�887�;:9�>=<�@@?�/N����������������������������������������������!! �##"�&&%�(('�++*�--,�00/�221�554�876�::9�=<;�@?>�BBA�/O�/P��������������������������������������@@?�����  �"#"�%%$�''&�**)�--,�//.�221�543�776�:98�<<;�??>�BA@�EDC�/O�/Q�.R�p���������������������������������������))(�� �""!�$%$�''&�**)�,,+�/.-�110�443�765�998�<;:�?>=�AA@�DCB�GFE�/P�.Q�.S�-U�Gk�������������������������������������sss�!"!�$$#�&&%�))(�,,+�..-�10/�332�665�987�;;:�>=<�A@?�CCB�FED�IHG�/P�.R�.S�-U�-W�,X����������������������������������������\\\�(('�++*�.-,�00/�321�554�887�;:9�==<�@?>�CBA�EED�HGF�KJI�/Q�.R�.T�-V�-W�,Y�,Z�Fp�����������������������������������������||{�0/.�221�554�776�::9�=<;�??>�BA@�EDC�GGF�JIH�MLK�.Q�.S�-U�-V�,X�,Y�+[�+]�*^�_�����������������������������������������������PON�998�<<;�?>=�BA@�DCB�GFE�JIH�LKJ�ONM�.R�.S�-U�-W�,X�,Z�+[�+]�*_�*`�)b�z���������������������������������������������������YXW�DCB�FED�IHG�LKJ�NML�QPO�.R�.T�-V�-W�,Y�,Z�+\�+^�*_�*a�)b�)d�(f�^�������������������������������������������������������xww�NML�QPO�SRQ�.S�-T�-V�,X�,Y�+[�+]�*^�*`�)a�)c�(e�(f�(h�'i�B~������������������������������������������������������������.S�-U�-W�,X�,Z�+[�+]�*_�*`�)b�)c�(e�(g�'h�'j�&k�&m�%o�N���������������������������������������������������.T�-V�-W�,Y�,Z�+\�+^�*_�*a�)b�)d�(f�(g�'i�'j�&l�&n�%o�%q�$r�$t�?��v����������������������������������-T�-V�,X�,Y�+[�+]�*^�*`�)a�)c�(e�(f�(h�'i�'k�&l�&n�%p�%q�$s�$t�#v�#w�"y�"z�/��Y������������������-U�-W�,X�,Z�+[�+]�*_�*`�)b�)c�(e�(g�'h�'j�&k�&m�%o�%p�$r�$s�#u�#v�#x�"y�"{�!|�!~� � �� �� �� ��-V�-W�,Y�,Z�+\�+^�*_�*a�)b�)d�(f�(g�'i�'j�&l�&n�%o�%q�$r�$t�#u�#w�"x�"z�!{�!}� ~� �� �� �� �� ��-V�,X�,Y�+[�+]�*^�*`�)a�)c�)e�(f�(h�'i�'k�&l�&n�%p�%q�$s�$t�#v�#w�"y�"z�!|�!}� � �� �� �� �� ��-W��,X�,Z�+[�+]�*_�*`�)b�)c�(e�(g�'h�'j�&k�&m�%o�%p�$r�$s�#u�#v�#x�"y�"{�!|�!~� � �� �� �� �� ���-W�;,Y��,Z�+\�+^�*_�*a�)b�)d�(f�(g�'i�'j�&l�&m�%o�%q�$r�$t�#u�#w�"x�"z�!{�!}� ~� �� �� �� �� ��� ��;(  ���������	
	�

����!! �%&%���������	�
���� �$$#�))(�CCC�������	�
�����##"�(('�--,�����565�����������""!�''&�,,+�110������������

�����!! �&&%�++*�00/�654����������565��	
	�

����  �%%$�**)�//.�443�:98��������������FGF�
�����$$#�))(�..-�332�887�>=<�;Y�����������������������##"�(('�--,�221�776�=<;�BA@�/P�;^������������������VVU�""!�''&�,,+�110�665�;;:�A@?�FED�.Q�-T�,X�a��������������������RRQ�0/.�554�::9�@?>�EDC�JJI�.R�-U�,Y�+\�*_�������������������������JJI�DCB�IHG�ONM�.S�-W�,Z�+]�*`�)c�(g�x����������������������������{zy�-T�,X�,[�+^�*a�)d�(h�'k�&n�@�������������������-U�,Y�+\�*_�)b�(e�'i�&l�%o�$r�#u�"x�!{�:��T���y���-V�,Z�+]�*`�)c�(f�'j�&m�%p�$s�#v�"y�!|� � �� ��-Xѽ,[�+^�*a�)d�(h�'k�&n�%q�$t�#w�"z�!}� �� �� ���A�A�A�A�A�A�A�A�A�A�A�A�A�A�A�A00 �%   � h<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>
P�6