C# 如何使用SelectedItem(mvvm方法)在网格单元格单击上显示子窗口

C# 如何使用SelectedItem(mvvm方法)在网格单元格单击上显示子窗口,c#,silverlight,xaml,mvvm,selecteditem,C#,Silverlight,Xaml,Mvvm,Selecteditem,我是一名c#silverlight初学者,我必须使用mvvm方法来完成我的任务。 我已经创建了一个如下所示的GUI: <UserControl x:Class="DEV_CENTER.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="htt

我是一名c#silverlight初学者,我必须使用mvvm方法来完成我的任务。 我已经创建了一个如下所示的GUI:

<UserControl x:Class="DEV_CENTER.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
              xmlns:vm="clr-namespace:DEV_CENTER"
             xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400">

    <UserControl.Resources>
        <vm:ProgramViewModel x:Key="ProgramViewModel"/>
    </UserControl.Resources>

    <Grid x:Name="LayoutRoot" Background="White">
        <data:DataGrid Grid.Row="0" x:Name="gridPrograms" AutoGenerateColumns="False" ItemsSource="{Binding Path=Progr}" IsReadOnly="True"  DataContext="{StaticResource ProgramViewModel}" >
            <data:DataGrid.Columns>
                <data:DataGridTextColumn Header="SerialNumber" Binding="{Binding Path=SerialNumber}" Width="2*"></data:DataGridTextColumn>
                <data:DataGridTextColumn Header="FirstName" Binding="{Binding Path=FirstName}" Width="2*"></data:DataGridTextColumn>
                <data:DataGridTextColumn Header="LastName" Binding="{Binding Path=LastName}" Width="3*"></data:DataGridTextColumn>
            </data:DataGrid.Columns>
        </data:DataGrid>
    </Grid>
</UserControl>


现在,我必须通过单击“
sso
”创建一个子窗口,并单击标题(
SerialNumber
)下方的“
program2
”的另一个子窗口。该子窗口还将包含一些按钮和文本框

我应该在哪里进行更改才能这样做。我必须使用Mvvm方法来进行更改。 使用“选择列表”是正确的方法吗,如果我使用“选择列表”,那么如何绑定它以及如何将它与Model.cs和ViewModel.cs链接?有人能帮我给出ViewModel.cs和Model.cs以及View.xaml的代码吗? 这将是一个很大的帮助。谢谢


注意:请注意,我不必使用Gala和任何第三个库(我更喜欢使用SelectedItem进行绑定)

我认为您可以通过使用DataGridTemplateColumn来实现您的目标,如图所示


或者使用样式,只针对DataGridCell,如中所示

将样式添加到控件资源中

<Style TargetType="{x:Type DataGridCell}" x:Key="DataGridCellClickStyle">  
    <EventSetter Event="PreviewMouseLeftButtonDown" Handler="DataGridCell_PreviewMouseLeftButtonDown"></EventSetter>
</Style>

然后添加CellStyle并引用上面创建的DataGridCellClickStyle

<DataGridTextColumn Header="SerialNumber" Binding="{Binding Path=SerialNumber}" Width="2*" CellStyle={StaticResource DataGridCellClickStyle}"/>'

但您的代码中有一个按钮。我只需点击网格单元,就会有一个CHILDWINDOW弹出窗口。无按钮我还使用TextBlock和PreviewMouseLeftButtonDown事件更新了DataGridTemplateColumn,而不是按钮和单击事件
<DataGridTextColumn Header="SerialNumber" Binding="{Binding Path=SerialNumber}" Width="2*" CellStyle={StaticResource DataGridCellClickStyle}"/>'