Hi,
Here's an example. You define your ChildWindow into the WindowContainer and set its DataContext to the DataGrid.SelectedItem. You only need to open the ChildWindow when the Selection changes :
Here's an example. You define your ChildWindow into the WindowContainer and set its DataContext to the DataGrid.SelectedItem. You only need to open the ChildWindow when the Selection changes :
<Grid>
<DataGrid x:Name="_dataGrid"
ItemsSource="{Binding Players}"
SelectedItem="{Binding SelectedPlayer}"
SelectionChanged="DataGrid_SelectionChanged"/>
<xctk:WindowContainer>
<xctk:ChildWindow x:Name="_childWindow"
DataContext="{Binding SelectedItem, ElementName=_dataGrid}"
Caption="Player's details"
Left="75"
Top="150"
Width="275"
Height="125">
<StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Text="FirstName:" />
<TextBlock Text="{Binding FirstName}"
Margin="10,0,0,0"/>
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Text="LastName:" />
<TextBlock Text="{Binding LastName}"
Margin="10,0,0,0" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Text="Number:" />
<TextBlock Text="{Binding Number}"
Margin="10,0,0,0" />
</StackPanel>
</StackPanel>
</xctk:ChildWindow>
</xctk:WindowContainer>
</Grid>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
_dataGrid.DataContext = this;
this.Players = new List<Player>()
{
new Player() { FirstName = "PK", LastName = "Subban", Number = 76 },
new Player() { FirstName = "Carey", LastName = "Price", Number = 31 },
new Player() { FirstName = "Max", LastName = "Pacioretty", Number = 67 },
new Player() { FirstName = "Alex", LastName = "Galchenyuk", Number = 27 },
};
this.SelectedPlayer = this.Players[ 1 ];
}
public Player SelectedPlayer
{
get;
set;
}
public List<Player> Players
{
get;
set;
}
private void DataGrid_SelectionChanged( object sender, SelectionChangedEventArgs e )
{
_childWindow.WindowState = Xceed.Wpf.Toolkit.WindowState.Open;
}
}
public class Player
{
public string FirstName
{
get;
set;
}
public string LastName
{
get;
set;
}
public int Number
{
get;
set;
}
}