C# 如何使用SelectedItem(mvvm方法)在网格单元格单击上显示子窗口
我是一名c#silverlight初学者,我必须使用mvvm方法来完成我的任务。 我已经创建了一个如下所示的GUI: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
<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}"/>'