Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.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# 如何使用MVVM逻辑在TextBlock内设置事件?_C#_Wpf_Xaml_Mvvm - Fatal编程技术网

C# 如何使用MVVM逻辑在TextBlock内设置事件?

C# 如何使用MVVM逻辑在TextBlock内设置事件?,c#,wpf,xaml,mvvm,C#,Wpf,Xaml,Mvvm,下面是我的代码视图部分。我需要的是在单击TextBlock时启动ViewModel的函数调用。因为我想维护MVVM,所以不能使用使用发送方参数的视图后端编码。我不知道触发器/事件命令,请指导我 车辆形式.xaml <Window x:Class="Seris.VehicalForm" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:

下面是我的代码视图部分。我需要的是在单击TextBlock时启动ViewModel的函数调用。因为我想维护MVVM,所以不能使用使用发送方参数的视图后端编码。我不知道触发器/事件命令,请指导我

车辆形式.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, UpdateSourceTrigger=PropertyChanged}"  HorizontalAlignment="Left" />
                <Label Content="Model" HorizontalAlignment="Left"/>
                <TextBox Name="Model_Text" Height="23" Width="80" TextWrapping="Wrap" Text="{Binding Model, UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Left" />
                <Label Content="Manufacturing Date" HorizontalAlignment="Left"/>
                <DatePicker Name="ManufacturingDate_DateTime" SelectedDate="{Binding ManufacturingDate, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" Width="136"/>
                <Label Content="IU No" HorizontalAlignment="Left"/>
                <TextBox Height="23" Width="80" Name="IUNO_Text" TextWrapping="Wrap" Text="{Binding IUNo, UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Left"/>
                <Label Content="Personnel" HorizontalAlignment="Left"/>
                <ComboBox Name="Personnel_Combo" SelectedValue="{Binding PersonnelNameSelected, UpdateSourceTrigger=PropertyChanged}" ItemsSource="{Binding PersonnelName, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" HorizontalAlignment="Left" Width="126"/>
                <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 Name="DG" ItemsSource="{Binding ListItems, UpdateSourceTrigger=PropertyChanged}" SelectionUnit="Cell" GridLinesVisibility="None" IsReadOnly="True" AutoGenerateColumns="False" BorderThickness="0">

                        <DataGrid.Columns>

                            <DataGridTemplateColumn Header="Vehical No">
                                <DataGridTemplateColumn.CellTemplate>
                                        <DataTemplate>
                                        <TextBlock Text="{Binding VehicalNo}" MouseDown="{Binding Edit_VehicalNo}" HorizontalAlignment="Center">
                                            //Here I want to put//
                                        </TextBlock>
                                    </DataTemplate>
                                    </DataGridTemplateColumn.CellTemplate>
                            </DataGridTemplateColumn>

                            <DataGridTemplateColumn Header="Model" >
                                <DataGridTemplateColumn.CellTemplate>
                                    <DataTemplate>
                                        <TextBlock Text="{Binding Model}" HorizontalAlignment="Center"  />
                                    </DataTemplate>
                                </DataGridTemplateColumn.CellTemplate>
                            </DataGridTemplateColumn>

                            <DataGridTemplateColumn Header="ManufacturingDate" >
                                <DataGridTemplateColumn.CellTemplate>
                                    <DataTemplate>
                                        <TextBlock Text="{Binding ManufacturingDate}" HorizontalAlignment="Center"  />
                                    </DataTemplate>
                                </DataGridTemplateColumn.CellTemplate>
                            </DataGridTemplateColumn>

                            <DataGridTemplateColumn Header="IUNo" >
                                <DataGridTemplateColumn.CellTemplate>
                                    <DataTemplate>
                                        <TextBlock Text="{Binding IUNo}" HorizontalAlignment="Center"  />
                                    </DataTemplate>
                                </DataGridTemplateColumn.CellTemplate>
                            </DataGridTemplateColumn>

                            <DataGridTemplateColumn Header="PersonnelNameSelected" >
                                <DataGridTemplateColumn.CellTemplate>
                                    <DataTemplate>
                                        <TextBlock Text="{Binding PersonnelNameSelected, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" HorizontalAlignment="Center"  />
                                    </DataTemplate>
                                </DataGridTemplateColumn.CellTemplate>
                            </DataGridTemplateColumn>

                        </DataGrid.Columns>

                    </DataGrid>
                </ListView>
                <TextBlock Name="Notification" Text="{Binding EditText, UpdateSourceTrigger=PropertyChanged}"/>
                <TextBlock Name="AllowEdit_Text"/>
            </WrapPanel>
            <ControlTemplate.Triggers>

                <DataTrigger Binding="{Binding IsMouseOver , ElementName=VV}" Value="true">
                    <Setter Property="Text" TargetName="Notification" Value="Kaypo 6e"/>
                </DataTrigger>
            </ControlTemplate.Triggers>
        </ControlTemplate>
    </Control.Template>
</Control>
</Window>

//我想放在这里//

为什么不能使用事件?MVVM并不意味着没有代码隐藏,如果是UI逻辑,那么代码隐藏就可以了,也许了解MVVM将有助于从视图后端访问其他控件(文本框等)?通常您会将控件的属性(如文本框)绑定到viewmodel中的字段。然后可以使用这些字段处理这些值。确保激活双向绑定使用交互行为