Mini Kabibi Habibi
<local:GridDemoModule x:Class="GridDemo.MasterDetailView"
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:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
xmlns:local="clr-namespace:GridDemo"
xmlns:dxdb="http://schemas.devexpress.com/winfx/2008/xaml/demobase"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
xmlns:dxgt="http://schemas.devexpress.com/winfx/2008/xaml/grid/themekeys"
xmlns:collections="clr-namespace:System.Collections;assembly=mscorlib"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
mc:Ignorable="d" d:DesignHeight="400" d:DesignWidth="800"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<local:GridDemoModule.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/GridDemo;component/Themes/generic.xaml" />
<ResourceDictionary Source="/GridDemo;component/Controls/ControlStyles/MasterDetailTemplates.xaml" />
<ResourceDictionary Source="/GridDemo;component/ModuleResources/SharedResources.xaml" />
</ResourceDictionary.MergedDictionaries>
<local:MasterDetailViewModel x:Key="viewModel" />
</ResourceDictionary>
</local:GridDemoModule.Resources>
<dxdb:DemoModuleControl SupressGroupFramePaddingInOptions="False">
<dxdb:DemoModuleControl.OptionsContent>
<StackPanel MinWidth="200">
<StackPanel DataContext="{StaticResource viewModel}">
<dxe:CheckEdit IsChecked="{Binding AllowPerPixelScrolling, ElementName=view, Mode=TwoWay}" Margin="10,0,0,5">Allow Per Pixel Scrolling</dxe:CheckEdit>
<dxe:CheckEdit IsChecked="{Binding ShowFixedTotalSummary, ElementName=view, Mode=TwoWay}" Margin="10,0,0,5">Show Total Summary</dxe:CheckEdit>
<dxe:CheckEdit IsChecked="{Binding ShowDetailButtons, Mode=TwoWay}" Margin="10,0,0,5">Show Detail Buttons</dxe:CheckEdit>
<dxe:CheckEdit x:Name="DetailContentCheck" IsChecked="True" Margin="10,0,0,5">Show Detail Content</dxe:CheckEdit>
</StackPanel>
<dx:GroupFrame Header="Orders Detail Options" Margin="0,10,0,0" VerticalAlignment="Top" DataContext="{StaticResource viewModel}">
<StackPanel>
<dxe:CheckEdit IsChecked="{Binding ShowOrdersColumnHeaders, Mode=TwoWay}" Margin="0,0,0,5">Show Column Headers</dxe:CheckEdit>
<dxe:CheckEdit IsChecked="{Binding ShowOrdersSummaries, Mode=TwoWay}">Show Total Summary</dxe:CheckEdit>
</StackPanel>
</dx:GroupFrame>
<dx:GroupFrame Header="Invoices Detail Options" Margin="0,10,0,0" VerticalAlignment="Top" DataContext="{StaticResource viewModel}">
<StackPanel>
<dxe:CheckEdit IsChecked="{Binding ShowInvoicesColumnHeaders, Mode=TwoWay}" Margin="0,0,0,5">Show Column Headers</dxe:CheckEdit>
<dxe:CheckEdit IsChecked="{Binding ShowInvoicesSummaries, Mode=TwoWay}">Show Total Summary</dxe:CheckEdit>
</StackPanel>
</dx:GroupFrame>
<dx:GroupFrame Header="Customers Detail Options" Margin="0,10,0,0" VerticalAlignment="Top" DataContext="{StaticResource viewModel}">
<StackPanel>
<dxe:CheckEdit IsChecked="{Binding ShowCustomersColumnHeaders, Mode=TwoWay}" Margin="0,0,0,5">Show Column Headers</dxe:CheckEdit>
<dxe:CheckEdit IsChecked="{Binding ShowCustomersSummaries, Mode=TwoWay}">Show Total Summary</dxe:CheckEdit>
</StackPanel>
</dx:GroupFrame>
</StackPanel>
</dxdb:DemoModuleControl.OptionsContent>
<dxg:GridControl x:Name="grid" ItemsSource="{Binding Employees}" DataContext="{StaticResource viewModel}">
<dxg:GridControl.DetailDescriptor>
<dxg:TabViewDetailDescriptor ShowHeader="False">
<dxg:TabViewDetailDescriptor.ContentTemplate>
<Binding Path="IsChecked" ElementName="DetailContentCheck">
<Binding.Converter>
<dx:BoolToObjectConverter TrueValue="{StaticResource tabViewDetailDescriptorContentTemplate}" />
</Binding.Converter>
</Binding>
</dxg:TabViewDetailDescriptor.ContentTemplate>
<dxg:TabViewDetailDescriptor.DetailDescriptors>
<dxg:DataControlDetailDescriptor ItemsSourceBinding="{Binding MDOrders}" ShowHeader="false">
<dxg:GridControl>
<dxg:GridControl.DetailDescriptor>
<dxg:DataControlDetailDescriptor ShowHeader="False" ItemsSourceBinding="{Binding Invoices}">
<dxg:GridControl>
<dxg:GridControl.Columns>
<dxg:GridColumn FieldName="ProductName" />
<dxg:GridColumn FieldName="UnitPrice" />
<dxg:GridColumn FieldName="Quantity" />
<dxg:GridColumn FieldName="Total" UnboundType="Decimal"
UnboundExpression="[UnitPrice]*[Quantity]" Header="Total" />
</dxg:GridControl.Columns>
<dxg:GridControl.View>
<dxg:TableView VerticalScrollbarVisibility="Auto" AutoWidth="True" NavigationStyle="Row"
DetailHeaderContent="Invoices" ShowGroupPanel="False"
ShowFixedTotalSummary="{Binding ShowInvoicesSummaries, Source={StaticResource viewModel}}"
ShowColumnHeaders="{Binding ShowInvoicesColumnHeaders, Source={StaticResource viewModel}}" />
</dxg:GridControl.View>
<dxg:GridControl.TotalSummary>
<dxg:GridSummaryItem SummaryType="Count" Alignment="Left"/>
<dxg:GridSummaryItem FieldName="Total" SummaryType="Sum" Alignment="Right" />
</dxg:GridControl.TotalSummary>
</dxg:GridControl>
</dxg:DataControlDetailDescriptor>
</dxg:GridControl.DetailDescriptor>
<dxg:GridControl.Columns>
<dxg:GridColumn FieldName="OrderDate" />
<dxg:GridColumn FieldName="Freight" />
<dxg:GridColumn FieldName="ShipName" />
<dxg:GridColumn FieldName="ShipCountry" CellTemplate="{StaticResource colCountryCellTemplate}" />
<dxg:GridColumn FieldName="ShipCity" />
<dxg:GridColumn FieldName="ShipAddress" />
</dxg:GridControl.Columns>
<dxg:GridControl.View>
<dxg:TableView VerticalScrollbarVisibility="Auto" AutoWidth="True" NavigationStyle="Row"
DetailHeaderContent="Orders" ShowGroupPanel="False"
ShowFixedTotalSummary="{Binding ShowOrdersSummaries}"
ShowColumnHeaders="{Binding ShowOrdersColumnHeaders}"
ShowDetailButtons="{Binding ShowDetailButtons, Converter={StaticResource booleanToDefaultBooleanConverter}}" />
</dxg:GridControl.View>
<dxg:GridControl.TotalSummary>
<dxg:GridSummaryItem FieldName="Freight" SummaryType="Sum" Alignment="Right" />
</dxg:GridControl.TotalSummary>
</dxg:GridControl>
</dxg:DataControlDetailDescriptor>
<dxg:DataControlDetailDescriptor ItemsSourceBinding="{Binding MDCustomers}" ShowHeader="false">
<dxg:GridControl>
<dxg:GridControl.Columns>
<dxg:GridColumn FieldName="ContactName" />
<dxg:GridColumn FieldName="Country" CellTemplate="{StaticResource colCountryCellTemplate}" />
<dxg:GridColumn FieldName="City" />
<dxg:GridColumn FieldName="Address" />
<dxg:GridColumn FieldName="Phone" />
</dxg:GridControl.Columns>
<dxg:GridControl.GroupSummary>
<dxg:GridSummaryItem FieldName="MDOrders.Count" SummaryType="Sum" />
</dxg:GridControl.GroupSummary>
<dxg:GridControl.View>
<dxg:TableView VerticalScrollbarVisibility="Auto" AutoWidth="True" NavigationStyle="Row"
DetailHeaderContent="Customers" ShowGroupPanel="False"
ShowFixedTotalSummary="{Binding ShowCustomersSummaries}"
ShowColumnHeaders="{Binding ShowCustomersColumnHeaders}" />
</dxg:GridControl.View>
<dxg:GridControl.TotalSummary>
<dxg:GridSummaryItem SummaryType="Count" Alignment="Left" />
</dxg:GridControl.TotalSummary>
</dxg:GridControl>
</dxg:DataControlDetailDescriptor>
<dxg:ContentDetailDescriptor ShowHeader="False" HeaderContent="Stats"
ContentTemplate="{StaticResource employeeStatsTemplate}" />
<dxg:ContentDetailDescriptor ContentTemplate="{StaticResource cardViewTemplate}"
ShowHeader="False" HeaderContent="Subordinates" />
</dxg:TabViewDetailDescriptor.DetailDescriptors>
</dxg:TabViewDetailDescriptor>
</dxg:GridControl.DetailDescriptor>
<dxg:GridControl.View>
<dxg:TableView x:Name="view" AllowPerPixelScrolling="True" AutoWidth="True"
NavigationStyle="Cell" DetailHeaderContent="Employees"
ShowFixedTotalSummary="True" ShowDetailButtons="{Binding ShowDetailButtons, Converter={StaticResource booleanToDefaultBooleanConverter}}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Loaded">
<i:InvokeCommandAction CommandName="ExpandMasterRow" CommandParameter="1"
Command="{Binding Commands.ExpandMasterRow, ElementName=view}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</dxg:TableView>
</dxg:GridControl.View>
<dxg:GridControl.Columns>
<dxg:GridColumn FieldName="FullName" ReadOnly="True" MinWidth="60" HeaderTemplate="{StaticResource ColumnHeaderTemplate}" />
<dxg:GridColumn FieldName="Title" Header="JobTitle" HeaderTemplate="{StaticResource ColumnHeaderTemplate}" />
<dxg:GridColumn FieldName="Region" Header="Country" MinWidth="60" CellTemplate="{StaticResource colCountryCellTemplate}" HeaderTemplate="{StaticResource ColumnHeaderTemplate}" />
<dxg:GridColumn FieldName="BirthDate" MinWidth="60" HeaderTemplate="{StaticResource ColumnHeaderTemplate}">
<dxg:GridColumn.EditSettings>
<dxe:DateEditSettings DisplayFormat="d" />
</dxg:GridColumn.EditSettings>
</dxg:GridColumn>
<dxg:GridColumn FieldName="EMail" Header="Contacts" Width="195" HeaderTemplate="{StaticResource ColumnHeaderTemplate}" />
</dxg:GridControl.Columns>
<dxg:GridControl.TotalSummary>
<dxg:GridSummaryItem SummaryType="Count" Alignment="Right"/>
</dxg:GridControl.TotalSummary>
</dxg:GridControl>
</dxdb:DemoModuleControl>
</local:GridDemoModule>