Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何处理GridView单元格上的双击事件_C#_Wpf_Xaml_Mvvm - Fatal编程技术网

C# 如何处理GridView单元格上的双击事件

C# 如何处理GridView单元格上的双击事件,c#,wpf,xaml,mvvm,C#,Wpf,Xaml,Mvvm,我的视图代码如下。我想添加一些功能,比如当我双击DataGrid的任何单元格时,它应该反映从单元格到名为“通知”的标签的值。你能告诉我怎么做吗?由于我是初学者,在我自己的代码中给出工作示例会对我有更多帮助。谢谢 车辆形式.xaml <Window x:Class="Seris.VehicalForm" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns

我的视图代码如下。我想添加一些功能,比如当我双击DataGrid的任何单元格时,它应该反映从单元格到名为“通知”的标签的值。你能告诉我怎么做吗?由于我是初学者,在我自己的代码中给出工作示例会对我有更多帮助。谢谢

车辆形式.xaml

<Window x:Class="Seris.VehicalForm"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="500" Width="600">
<Control>
    <Control.Template>
        <ControlTemplate>
            <WrapPanel Orientation="Vertical" Margin="10 " >
                <Label Content="Vehical No" HorizontalAlignment="Left"/>
                <TextBox Name="VehicalNo_Text" Height="23" Width="80" TextWrapping="Wrap" Text="{Binding VehicalNo}"  HorizontalAlignment="Left" />
                <Label Content="Model" HorizontalAlignment="Left"/>
                <TextBox Name="Model_Text" Height="23" Width="80" TextWrapping="Wrap" Text="{Binding Model}" HorizontalAlignment="Left" />
                <Label Content="Manufacturing Date" HorizontalAlignment="Left"/>
                <DatePicker Name="ManufacturingDate_DateTime" SelectedDate="{Binding ManufacturingDate, Mode=TwoWay}"/>
                <Label Content="IU No" HorizontalAlignment="Left"/>
                <TextBox Height="23" Width="80" Name="IUNO_Text" TextWrapping="Wrap" Text="{Binding IUNo}" HorizontalAlignment="Left"/>
                <Label Content="Personnel" HorizontalAlignment="Left"/>
                <ComboBox Name="Personnel_Combo" Text="{Binding Personnel}" HorizontalAlignment="Left" Width="116"/>
                <Separator Height="20" RenderTransformOrigin="0.5,0.5" Width="16"/>
                <Button Name="Save_Button" Command="{Binding SaveButton_Command}" Content="Save" Width="66"/>
                <Label x:Name="Error_Label" Content="{Binding ErrorMessage, UpdateSourceTrigger=PropertyChanged}" Foreground="Red" HorizontalAlignment="Left" Height="41" Width="137"/>
                <ListView Name ="Grid" Height="294" Width="371" >
                    <DataGrid ItemsSource="{Binding ListItems, UpdateSourceTrigger=PropertyChanged}" SelectionUnit="Cell" GridLinesVisibility="None" IsReadOnly="True" AutoGenerateColumns="False" BorderThickness="0">
                        <DataGrid.Columns>
                            <DataGridTextColumn Header="Vehical No" Binding="{Binding VehicalNo}" />
                            <DataGridTextColumn Header="Model" Binding="{Binding Model}" />
                            <DataGridTextColumn Header="ManufacturingDate" Binding="{Binding ManufacturingDate}" />
                            <DataGridTextColumn Header="IUNo" Binding="{Binding IUNo}" />
                            <DataGridTextColumn Header="Personnel" Binding="{Binding Personnel}" />
                        </DataGrid.Columns>
                    </DataGrid>
                </ListView>
                <Label Name="Notification"/>

            </WrapPanel>
            <ControlTemplate.Triggers>
                <DataTrigger Binding="{Binding IsMouseOver, ElementName=Grid}" Value="true">
                    <Setter Property="Content" TargetName="Notification">
                        <Setter.Value>
                            <MultiBinding StringFormat="{}Name is '{0}'}">
                                <Binding ElementName="Notification" Path="Text" />
                            </MultiBinding>
                        </Setter.Value>
                    </Setter>
                </DataTrigger>
            </ControlTemplate.Triggers>
        </ControlTemplate>
    </Control.Template>
</Control>
</Window>

有两种方法可以管理双击datagrid的单元格,如下所述:

因此,不要使用您的绑定,而是希望使用另一个绑定来更新通知标签

因此,在您的xaml文件中,您将有如下内容:

<Label Name="Notification" Content="{Binding NotificationContent}"/>

在viewModel中,当命令被触发时,您将更新NotificationContent属性


希望有帮助。

您的链接很好,但不符合MVVM结构。所以没有用。在代码隐藏中,可以将viewModel作为DataContext访问。或者使用Datagrid以外的其他控件并绑定命令。