I'm creating a nested grid view that is three levels deep. I have a parent and a child grid with the child grid containing a tab control with two additional grids. The grids and everything load properly, however the buttons in the tab items are never being displayed (Add Hedging Default and Add Tank Bottom).
Do you see anything wrong with the XAML that would prevent them from being displayed? I've removed the stack panel, tried other buttons, set the size explicitly, etc without any change.
At this point I'm at a loss of where to go from here.
Thank you
<
Grid
DataContext
=
"{StaticResource VmTerminalConfiguration}"
Name
=
"rootWindow"
>
<
Grid.Resources
>
<
DataTemplate
x:Key
=
"ChildRowDetailsTemplate"
>
<
telerik:RadTabControl
x:Name
=
"tabControl"
telerik:TouchManager.IsTouchHitTestVisible
=
"False"
>
<
telerik:RadTabItem
Header
=
"Hedging Defaults"
Name
=
"hedgingDefaultsTabItem"
>
<
Grid
x:Name
=
"LayoutWhite"
Background
=
"White"
>
<
Grid.RowDefinitions
>
<
RowDefinition
Height
=
"Auto"
/>
<
RowDefinition
Height
=
"*"
/>
</
Grid.RowDefinitions
>
<
StackPanel
Orientation
=
"Horizontal"
HorizontalAlignment
=
"Center"
Grid.Row
=
"0"
Margin
=
"0,5,0,5"
>
<
telerik:RadButton
Content
=
"Add New Hedging Default"
Click
=
"AddHedgingDefaultButton_Click"
Width
=
"150"
Margin
=
"0,0,5,0"
/>
</
StackPanel
>
<
telerik:RadGridView
Grid.Row
=
"1"
Name
=
"hedgingDefaultRadGridView"
GroupRenderMode
=
"Flat"
ItemsSource
=
"{Binding TerminalConfigurationHedgingDefaultVMs}"
Foreground
=
"Black"
Height
=
"250"
RowIndicatorVisibility
=
"Collapsed"
AutoGenerateColumns
=
"False"
CanUserFreezeColumns
=
"False"
BorderThickness
=
"0"
CanUserResizeColumns
=
"False"
ShowGroupPanel
=
"False"
BorderBrush
=
"{x:Null}"
Margin
=
"0"
EditTriggers
=
"CellClick"
CellEditEnded
=
"CellEditEnded"
>
<
telerik:RadGridView.Resources
>
<
Style
x:Key
=
"GridViewToggleButtonColumnStyle"
TargetType
=
"telerik:GridViewCell"
>
<
Setter
Property
=
"Padding"
Value
=
"0,0,0,0"
/>
</
Style
>
</
telerik:RadGridView.Resources
>
<
telerik:RadGridView.Columns
>
<
telerik:GridViewComboBoxColumn
Header
=
"Product"
DataMemberBinding
=
"{Binding ParentCommodityID}"
SelectedValueMemberPath
=
"CommodityID"
DisplayMemberPath
=
"CommodityName"
ItemsSource
=
"{Binding AllParentCommodities,ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}"
/>
<
telerik:GridViewComboBoxColumn
Name
=
"cmbReceiptHedgingDefault"
Header
=
"Receipt"
DataMemberBinding
=
"{Binding ReceiptHedgingDefault, Mode=TwoWay, ValidatesOnDataErrors=True}"
ItemsSource
=
"{Binding DefaultOptions}"
/>
<
telerik:GridViewComboBoxColumn
Name
=
"cmbOtherHedgingDefault"
Header
=
"Other"
DataMemberBinding
=
"{Binding OtherHedgingDefault, Mode=TwoWay, ValidatesOnDataErrors=True}"
ItemsSource
=
"{Binding DefaultOptions}"
/>
<
telerik:GridViewComboBoxColumn
Name
=
"cmbScheduleHedgingDefault"
Header
=
"Schedule"
DataMemberBinding
=
"{Binding ScheduleHedgingDefault, Mode=TwoWay, ValidatesOnDataErrors=True}"
ItemsSource
=
"{Binding DefaultOptions}"
/>
<
telerik:GridViewDataColumn
Name
=
"dpHedgingDefaultEffectiveDate"
Header
=
"Effective Date"
DataMemberBinding
=
"{Binding EffectiveDate, StringFormat=d, ValidatesOnDataErrors=True}"
Width
=
"150"
/>
</
telerik:RadGridView.Columns
>
</
telerik:RadGridView
>
</
Grid
>
</
telerik:RadTabItem
>
<
telerik:RadTabItem
Header
=
"Tank Bottoms"
Name
=
"tankBottomsTabItem"
>
<
Grid
Background
=
"White"
>
<
Grid.RowDefinitions
>
<
RowDefinition
Height
=
"Auto"
/>
<
RowDefinition
Height
=
"*"
/>
</
Grid.RowDefinitions
>
<
StackPanel
Orientation
=
"Horizontal"
HorizontalAlignment
=
"Center"
Grid.Row
=
"0"
Margin
=
"0,5,0,5"
>
<
telerik:RadButton
Content
=
"Add New Tank Bottom"
Click
=
"AddTankBottomButton_Click"
Width
=
"150"
Margin
=
"0,0,5,0"
/>
</
StackPanel
>
<
telerik:RadGridView
Grid.Row
=
"1"
x:Name
=
"tankBottomRadGridView"
GroupRenderMode
=
"Flat"
ItemsSource
=
"{Binding TerminalConfigurationTankBottomVMs}"
Foreground
=
"Black"
Height
=
"250"
RowIndicatorVisibility
=
"Collapsed"
AutoGenerateColumns
=
"False"
CanUserFreezeColumns
=
"False"
BorderThickness
=
"0"
CanUserResizeColumns
=
"False"
ShowGroupPanel
=
"False"
BorderBrush
=
"{x:Null}"
Margin
=
"0"
EditTriggers
=
"CellClick"
CellEditEnded
=
"CellEditEnded"
>
<
telerik:RadGridView.Resources
>
<
Style
x:Key
=
"GridViewToggleButtonColumnStyle"
TargetType
=
"telerik:GridViewCell"
>
<
Setter
Property
=
"Padding"
Value
=
"0,0,0,0"
/>
</
Style
>
</
telerik:RadGridView.Resources
>
<
telerik:RadGridView.Columns
>
<
telerik:GridViewComboBoxColumn
Header
=
"Product"
DataMemberBinding
=
"{Binding ParentCommodityID}"
SelectedValueMemberPath
=
"CommodityID"
DisplayMemberPath
=
"CommodityName"
ItemsSource
=
"{Binding AllParentCommodities,ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}"
/>
<
telerik:GridViewDataColumn
Name
=
"txtTankBottom"
Header
=
"Tank Bottom"
DataMemberBinding
=
"{Binding Bottom,ValidatesOnDataErrors=True}"
Width
=
"150"
/>
<
telerik:GridViewDataColumn
Name
=
"dpTankBottomEffectiveDate"
Header
=
"Effective Date"
DataMemberBinding
=
"{Binding EffectiveDate, StringFormat=d, ValidatesOnDataErrors=True}"
Width
=
"150"
/>
</
telerik:RadGridView.Columns
>
</
telerik:RadGridView
>
</
Grid
>
<!--<local:TerminalInventoryGridCommentView />-->
</
telerik:RadTabItem
>
</
telerik:RadTabControl
>
</
DataTemplate
>
<
DataTemplate
x:Key
=
"RowDetailsTemplate"
>
<
Grid
>
<
Grid.RowDefinitions
>
<
RowDefinition
Height
=
"Auto"
/>
<
RowDefinition
Height
=
"*"
/>
</
Grid.RowDefinitions
>
<
StackPanel
Orientation
=
"Horizontal"
HorizontalAlignment
=
"Center"
Grid.Row
=
"0"
Margin
=
"0,5,0,5"
>
<
telerik:RadButton
Content
=
"Add New Terminal"
Click
=
"AddTerminalButton_Click"
Width
=
"150"
Margin
=
"0,0,5,0"
/>
</
StackPanel
>
<
telerik:RadGridView
Grid.Row
=
"1"
HorizontalAlignment
=
"Stretch"
Name
=
"terminalGridView"
VerticalAlignment
=
"Stretch"
ItemsSource
=
"{Binding TerminalConfigurationTerminalVMs}"
Margin
=
"0"
GroupRenderMode
=
"Flat"
RowIndicatorVisibility
=
"Collapsed"
IsReadOnly
=
"False"
AutoGenerateColumns
=
"False"
CanUserFreezeColumns
=
"False"
CanUserResizeColumns
=
"False"
ColumnWidth
=
"*"
RowDetailsTemplate
=
"{StaticResource ChildRowDetailsTemplate}"
AllowDrop
=
"True"
IsFilteringAllowed
=
"False"
CanUserReorderColumns
=
"True"
CanUserDeleteRows
=
"False"
CanUserSortColumns
=
"False"
CanUserSortGroups
=
"False"
ShowGroupPanel
=
"False"
EditTriggers
=
"CellClick"
CellEditEnded
=
"CellEditEnded"
>
<
telerik:RadGridView.Columns
>
<
telerik:GridViewToggleRowDetailsColumn
/>
<
telerik:GridViewComboBoxColumn
Name
=
"cmbTerminalName"
Header
=
"Name"
DataMemberBinding
=
"{Binding TerminalID}"
SelectedValueMemberPath
=
"TerminalID"
DisplayMemberPath
=
"TerminalName"
ItemsSource
=
"{Binding AllTerminals, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}"
Width
=
"150"
/>
<
telerik:GridViewDataColumn
Name
=
"dpTerminalStartDate"
Header
=
"Start Date"
DataMemberBinding
=
"{Binding StartDate, StringFormat=d, ValidatesOnDataErrors=True, Mode=TwoWay}"
Width
=
"150"
/>
<
telerik:GridViewDataColumn
Name
=
"dpTerminalEndDate"
Header
=
"End Date"
DataMemberBinding
=
"{Binding EndDate, StringFormat=d, ValidatesOnDataErrors=True, Mode=TwoWay}"
Width
=
"150"
/>
</
telerik:RadGridView.Columns
>
</
telerik:RadGridView
>
</
Grid
>
</
DataTemplate
>
</
Grid.Resources
>
<
Grid
>
<
Grid.RowDefinitions
>
<
RowDefinition
Height
=
"Auto"
/>
<
RowDefinition
Height
=
"*"
/>
</
Grid.RowDefinitions
>
<
StackPanel
Orientation
=
"Horizontal"
HorizontalAlignment
=
"Center"
Grid.Row
=
"0"
Margin
=
"0,5,0,5"
>
<
telerik:RadButton
Content
=
"Add New Delivery Area"
Click
=
"AddDeliveryAreaButton_Click"
Width
=
"150"
Margin
=
"0,0,5,0"
/>
<
telerik:RadButton
Content
=
"Save Changes"
Click
=
"SaveChangesButton_Click"
Width
=
"150"
Margin
=
"0,0,5,0"
/>
</
StackPanel
>
<
telerik:RadGridView
Grid.Row
=
"1"
HorizontalAlignment
=
"Stretch"
Name
=
"parentGridView"
VerticalAlignment
=
"Stretch"
ItemsSource
=
"{Binding TerminalConfigurationDeliveryAreaVMs}"
Margin
=
"0"
GroupRenderMode
=
"Flat"
RowIndicatorVisibility
=
"Collapsed"
IsReadOnly
=
"False"
AutoGenerateColumns
=
"False"
CanUserFreezeColumns
=
"False"
CanUserResizeColumns
=
"False"
ColumnWidth
=
"*"
RowDetailsTemplate
=
"{StaticResource RowDetailsTemplate}"
AllowDrop
=
"True"
IsFilteringAllowed
=
"False"
CanUserReorderColumns
=
"True"
CanUserDeleteRows
=
"False"
CanUserSortColumns
=
"False"
CanUserSortGroups
=
"False"
ShowGroupPanel
=
"False"
EditTriggers
=
"CellClick"
CellEditEnded
=
"CellEditEnded"
>
<
telerik:RadGridView.Columns
>
<
telerik:GridViewToggleRowDetailsColumn
/>
<
telerik:GridViewDataColumn
Header
=
"Name"
DataMemberBinding
=
"{Binding DeliveryAreaName}"
/>
<
telerik:GridViewComboBoxColumn
Name
=
"cmbInventoryRegion"
Header
=
"Region"
DataMemberBinding
=
"{Binding InventoryRegion,Mode=TwoWay, ValidatesOnDataErrors=True}"
ItemsSource
=
"{Binding AllInventoryRegions}"
/>
<
telerik:GridViewCheckBoxColumn
Name
=
"cbInactive"
Header
=
"Inactive"
DataMemberBinding
=
"{Binding Inactive}"
/>
</
telerik:RadGridView.Columns
>
</
telerik:RadGridView
>
</
Grid
>
</
Grid
>
<
telerik:RadTransitionControl
Grid.Column
=
"3"
Grid.Row
=
"1"
prism:RegionManager.RegionName
=
"{x:Static common:RegionNames.MainRegion}"
>
<
telerik:RadTransitionControl.Transition
>
<
telerik:SlideAndZoomTransition
/>
</
telerik:RadTransitionControl.Transition
>
</
telerik:RadTransitionControl
>
<
Style
TargetType
=
"telerik:RadDiagramConnection"
>
<!---->
<
Setter
Property
=
"Visibility"
Value
=
"{Binding Visibility, Mode=TwoWay}"
/>
<!---->
public
class
Item : INPBase {
#region Content
private
string
_Content;
public
string
Content {
get
{
return
_Content; }
set
{ Set(
ref
_Content, value); }
}
#endregion
}
public
class
Link : INPBase, ILink<Item> {
public
Visibility Visibility {
get
;
set
; }
public
Item Source {
get
;
set
; }
public
Item Target {
get
;
set
; }
object
ILink.Source {
get
{
return
((
object
)Source); }
set
{
if
(!((
object
)Source).Equals(value)) { Source = value
as
Item; } }
}
object
ILink.Target {
get
{
return
((
object
)Target); }
set
{
if
(!((
object
)Target).Equals(value)) { Target = value
as
Item; } }
}
public
Link() { Visibility = Visibility.Visible; }
}
public
class
TestTree : INPBase, IGraphSource {
public
ObservableCollection<Item> InternalItems {
get
;
private
set
; }
public
ObservableCollection<Link> InternalLinks {
get
;
private
set
; }
public
Item RootNode {
get
;
private
set
; }
public
System.Collections.IEnumerable Items {
get
{
return
(InternalItems); } }
public
IEnumerable<ILink> Links {
get
{
return
(InternalLinks); } }
public
TestTree() {
InternalItems =
new
ObservableCollection<Item>();
InternalLinks =
new
ObservableCollection<Link>();
BuildTree();
}
private
void
BuildTree() {
RootNode =
new
Item() { Content =
"One"
};
Item iTwo =
new
Item() { Content =
"Two"
};
Item iThree =
new
Item() { Content =
"Three"
};
Item iFour =
new
Item() { Content =
"Four"
};
InternalItems.Add(RootNode);
InternalItems.Add(iTwo);
InternalItems.Add(iThree);
InternalItems.Add(iFour);
InternalLinks.Add(
new
Link() { Target = RootNode, Source = iTwo });
InternalLinks.Add(
new
Link() { Target = RootNode, Source = iThree });
InternalLinks.Add(
new
Link() { Target = RootNode, Source = iFour });
}
public
void
RebuildTree() {
InternalLinks.Clear();
InternalItems.Clear();
BuildTree();
}
public
void
AddNodeWithLink() {
Item iNew =
new
Item() { Content =
"I"
+ InternalItems.Count.ToString() };
Item iSource = InternalItems.First();
InternalItems.Add(iNew);
InternalLinks.Add(
new
Link() { Target = iSource, Source = iNew });
}
}
public
class
TestVM : INPBase {
private
TestTree _TestTree;
public
TestTree TestTree {
get
{
return
_TestTree; }
}
public
TestVM() {
_TestTree =
new
TestTree();
}
public
void
AddNode() {
_TestTree.AddNodeWithLink();
}
public
void
Rebuild() {
_TestTree.RebuildTree();
}
}
System.Windows.Data Error: 40 : BindingExpression path error: 'Visibility' property not found on 'object' ''TestVM' (HashCode=61656587)'. BindingExpression:Path=Visibility; DataItem='TestVM' (HashCode=61656587); target element is 'RadDiagramConnection' (Name=''); target property is 'Visibility' (type 'Visibility')
<
Grid
DataContext
=
"{Binding}"
x:Name
=
"grdHolder"
>
<
Grid.RowDefinitions
>
<
RowDefinition
Height
=
"Auto"
/>
<
RowDefinition
Height
=
"*"
/>
</
Grid.RowDefinitions
>
<
Button
Content
=
"Add node"
VerticalAlignment
=
"Center"
HorizontalAlignment
=
"Left"
Click
=
"AddNode_Click"
/>
<
Button
Content
=
"Rebuild"
VerticalAlignment
=
"Center"
HorizontalAlignment
=
"Center"
Click
=
"Rebuild_Click"
/>
<
Button
Content
=
"Layout"
VerticalAlignment
=
"Center"
HorizontalAlignment
=
"Right"
Click
=
"Layout_Click"
/>
<
telerik:RadDiagram
x:Name
=
"dG"
GraphSource
=
"{Binding TestTree}"
Grid.Row
=
"1"
/>
</
Grid
>
<
telerik:RadTabItem
>
<
telerik:RadTabItem.Content
>
<
Grid
Name
=
"displaypending"
>
<
Grid.RowDefinitions
>
<
RowDefinition
Height
=
"*"
/>
</
Grid.RowDefinitions
>
</
Grid
>
</
telerik:RadTabItem.Content
>
</
telerik:RadTabItem
>
if
(displaypending !=
null
)
{
displaypending.Children.Clear();
Pending pending =
new
Pending();
displaypending.Children.Add(pending);
IsScanningAllowed = ApplicationVariables.IsScannerInitiated;
}
Hi,
I have a layout with RadTreeView docked to left using RadDocking and a RadTileView inside a DocumentHose. While I unpin the panel which is docked to left and don't move the mouse from pin button, the unpinned panel expands again but it is empty.
Please find my code below:
<telerik:RadDocking Background="Transparent" BorderThickness="0" HorizontalAlignment="Left" >
<telerik:RadDocking.DocumentHost>
<telerik:RadTileView x:Name="c_tileView" ColumnWidth="Auto" RowsCount="2"
RowHeight="Auto" MinimizedColumnWidth="450" MinimizedRowHeight="150"
IsItemsSizeInPercentages="True" PreservePositionWhenMaximized="true"
telerik:TileViewPanel.IsColumnsShrinkEnabled="True"
telerik:TileViewPanel.IsRowsShrinkEnabled="True"
telerik:TileViewPanel.IsSizeBoundToPosition="True"
telerik:PersistenceManager.StorageId="tileView">
<telerik:RadTileViewItem RestoredHeight="30" MinimizedHeight="150" RestoredWidth="28" >
<Rectangle/>
</telerik:RadTileViewItem>
<telerik:RadTileViewItem RestoredHeight="25" MinimizedHeight="150" RestoredWidth="48" >
<Rectangle/>
</telerik:RadTileViewItem>
<telerik:RadTileViewItem RestoredHeight="50" MinimizedHeight="150" RestoredWidth="24" >
<Rectangle/>
</telerik:RadTileViewItem>
</telerik:RadTileView>
</telerik:RadDocking.DocumentHost>
<telerik:RadSplitContainer MaxWidth="300" telerik:DockingPanel.InitialSize="210,150" InitialPosition="DockedLeft">
<telerik:RadPaneGroup>
<telerik:RadPane Header="Screen Models" CanUserClose="False"
ContextMenuTemplate="{x:Null}"
CanDockInDocumentHost="False" IsPinned="False">
<telerik:RadTreeView x:Name="c_treeView" Grid.Row="1" Margin="0"
VerticalAlignment="Stretch" IsLineEnabled="True"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
IsDragDropEnabled="False">
<telerik:RadTreeViewItem Header="Test A" IsExpanded="True">
<telerik:RadTreeViewItem Header="Model A"/>
<telerik:RadTreeViewItem Header="Model B"/>
<telerik:RadTreeViewItem Header="Model C"/>
<telerik:RadTreeViewItem Header="Model D"/>
</telerik:RadTreeViewItem>
</telerik:RadTreeView>
</telerik:RadPane>
</telerik:RadPaneGroup>
</telerik:RadSplitContainer>
</telerik:RadDocking>
<
telerik:RadGridView
ItemsSource
=
"{Binding Persons}"
SelectedItem
=
"{Binding Selectedperson, Mode=TwoWay}"
VerticalAlignment
=
"Stretch"
HorizontalAlignment
=
"Stretch"
AutoGenerateColumns
=
"True"
telerik:StyleManager.Theme
=
"Windows7"
>
<
telerik:RadGridView.ChildTableDefinitions
>
<
telerik:GridViewTableDefinition
>
</
telerik:GridViewTableDefinition
>
</
telerik:RadGridView.ChildTableDefinitions
>
<
telerik:RadGridView.HierarchyChildTemplate
>
<
DataTemplate
>
<
telerik:RadGridView
AutoGenerateColumns
=
"True"
telerik:StyleManager.Theme
=
"Windows7"
ItemsSource
=
"{Binding Details}"
>
</
telerik:RadGridView
>
</
DataTemplate
>
</
telerik:RadGridView.HierarchyChildTemplate
>
</
telerik:RadGridView
>
namespace
MasterDetailViaDataTables
{
public
partial
class
MainWindow : Window
{
public
MainWindow()
{
InitializeComponent();
this
.DataContext =
new
MainViewModel();
}
namespace
MasterDetailViaDataTables
{
public
class
PersonDetails : BindableBase
{
private
int
_PersonID;
public
int
PersonID
{
get
{
return
_PersonID; }
set
{
this
.SetProperty<
int
>(
ref
this
._PersonID, value); }
}
private
string
address;
public
string
Address
{
get
{
return
address; }
set
{
this
.SetProperty<
string
>(
ref
this
.address, value); }
}
private
string
_Description;
public
string
Description
{
get
{
return
_Description; }
set
{
this
.SetProperty<
string
>(
ref
this
._Description, value); }
}
public
static
ObservableCollection<PersonDetails> GetDetails()
{
ObservableCollection<PersonDetails> details =
new
ObservableCollection<PersonDetails>();
try
{
DataTable table =
new
DataTable(
"persondetail"
);
DataColumn PersonID =
new
DataColumn(
"PersonID"
,
typeof
(System.Int64));
DataColumn Address =
new
DataColumn(
"Address"
,
typeof
(System.String));
DataColumn Description =
new
DataColumn(
"Description"
,
typeof
(System.String));
table.Columns.Add(PersonID);
table.Columns.Add(Address);
table.Columns.Add(Description);
for
(
int
pID = 1; pID <= 5; pID++)
{
for
(
int
i = 0; i < 2; i++)
{
DataRow row = table.NewRow();
row[
"PersonID"
] = pID;
row[
"Address"
] =
"Address"
+ (pID-1).ToString() +
" - "
+ i.ToString();
row[
"Description"
] =
"Description"
+ (pID-1).ToString() +
" - "
+ i.ToString();
table.Rows.Add(row);
}
}
details.Clear();
for
(
int
i = 0; i < table.Rows.Count; ++i)
details.Add(
new
PersonDetails
{
PersonID = Convert.ToInt32(table.Rows[i][0]),
Address = table.Rows[i][1].ToString(),
Description = table.Rows[i][2].ToString()
});
}
catch
(Exception ex)
{
Console.WriteLine(ex.Message);
}
return
details;
}
}
public
class
Person : BindableBase
{
private
int
_PersonID;
private
string
_FirstName;
private
string
_LastName;
public
int
PersonID
{
get
{
return
_PersonID; }
set
{
this
.SetProperty<
int
>(
ref
this
._PersonID, value); }
}
public
string
FirstName
{
get
{
return
_FirstName; }
set
{
this
.SetProperty<
string
>(
ref
this
._FirstName, value); }
}
public
string
LastName
{
get
{
return
_LastName; }
set
{
this
.SetProperty<
string
>(
ref
this
._LastName, value); }
}
public
static
ObservableCollection<Person> GetPersons()
{
ObservableCollection<Person> persons =
new
ObservableCollection<Person>();
try
{
DataTable table =
new
DataTable(
"person"
);
DataColumn id =
new
DataColumn(
"PersonID"
,
typeof
(System.Int64));
id.AutoIncrement =
true
;
id.AutoIncrementSeed = 1;
DataColumn FirstName =
new
DataColumn(
"FirstName"
,
typeof
(System.String));
DataColumn LastName =
new
DataColumn(
"LastName"
,
typeof
(System.String));
table.Columns.Add(id);
table.Columns.Add(FirstName);
table.Columns.Add(LastName);
for
(
int
i = 0; i < 5; i++)
{
DataRow row = table.NewRow();
row[
"FirstName"
] =
"FirstName"
+ i.ToString();
row[
"LastName"
] =
"LastName"
+ i.ToString();
table.Rows.Add(row);
}
persons.Clear();
for
(
int
i = 0; i < table.Rows.Count; ++i)
persons.Add(
new
Person
{
PersonID = Convert.ToInt32(table.Rows[i][0]),
FirstName = table.Rows[i][1].ToString(),
LastName = table.Rows[i][2].ToString()
});
}
catch
(Exception ex)
{
Console.WriteLine(ex.Message);
}
return
persons;
}
}
public
class
MainViewModel : BindableBase, INotifyPropertyChanged
{
public
MainViewModel()
{
this
.Persons = Person.GetPersons();
}
private
ObservableCollection<Person> personValues;
public
ObservableCollection<Person> Persons
{
get
{
return
personValues; }
set
{
this
.SetProperty<ObservableCollection<Person>>(
ref
this
.personValues, value); }
}
private
ObservableCollection<PersonDetails> detailsvalues;
public
ObservableCollection<PersonDetails> Details
{
get
{
if
(
this
.Selectedperson ==
null
)
{
return
null
;
}
return
this
.LoadDetails(
this
.Selectedperson.PersonID);
}
}
private
ObservableCollection<PersonDetails> LoadDetails(
int
personID)
{
ObservableCollection<PersonDetails> details =
new
ObservableCollection<PersonDetails>();
foreach
(PersonDetails detail
in
PersonDetails.GetDetails().Where(item => item.PersonID == personID))
{
details.Add(detail);
}
return
details;
}
private
Person selectedPersonValue;
public
Person Selectedperson
{
get
{
return
selectedPersonValue; }
set
{
this
.SetProperty<Person>(
ref
this
.selectedPersonValue, value);
this
.RaiseNotification(
"Details"
);
}
}
}