Как написать команду реле на событие изменения Checkox в DataGridCheckboxColumn в шаблоне WPF MVVM? - PullRequest
0 голосов
/ 26 января 2020

У меня есть сетка данных, в которой есть DataGridTemplateColumns, поэтому я намерен написать команду для изменения флажка способом MVVM, так как DataGridTemplateColumn не дает подсказки, например Command, для запуска с командой relay. Как я могу этого добиться. Я хочу отключить поле со списком на странице, когда флажок установлен, и когда он снят, я хочу включить поле со списком. Каков наилучший подход для этого с использованием шаблона MVVM? Есть ли другие способы, которыми мы можем написать команды для этого типа сценария ios? Поскольку я новичок в WPF, любое предложение или совет будет отличной помощью. Заранее спасибо!

<Window x:Class="CustomCtrldemo.MainWindow"
        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:local="clr-namespace:CustomCtrldemo"
        xmlns:vm="clr-namespace:CustomCtrldemo.ViewModels"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Window.Resources>
        <vm:MainWindowViewModel x:Key="MainWindowVM"/>
    </Window.Resources>
    <Window.DataContext>
        <vm:MainWindowViewModel />
    </Window.DataContext>


    <Grid DataContext="{Binding Source={StaticResource MainWindowVM }}">
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition/>
            <RowDefinition/>
            <RowDefinition/>
            <RowDefinition/>
            <RowDefinition/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <TextBox Name="TxtFilterGrid" Grid.Row="0" Grid.Column="0" Width="100" Height="20" Text="{Binding Path=FilterText,UpdateSourceTrigger=PropertyChanged}"  />
        <Button Grid.Row="1" Grid.Column="0" Content="Load Grid"  Width="100" Height="20" Command="{Binding LoadGridCommand}" />
        <Grid x:Name="gridAuthors" Grid.Column="1" Grid.RowSpan="4" >
            <DataGrid x:Name="dgAuthors" ItemsSource="{Binding Authors}"  AutoGenerateColumns="False" >
                <DataGrid.Columns>
                    <DataGridTextColumn Header="ID" Binding="{Binding Path=ID}"  />
                    <DataGridTextColumn Header="Name" Binding="{Binding Path=Name}" />
                    <DataGridTextColumn Header="Book Title" Binding="{Binding  Path=BookTitle}" />
                    <DataGridCheckBoxColumn Header="MVP Enabled" Binding="{Binding  Path=IsMVP}" **Command** />
                </DataGrid.Columns>
            </DataGrid>
        </Grid>
        <Button Grid.Row="2" Grid.Column="0" Content="Load Control"  Width="100" Height="20"/>
        <Button Grid.Row="3" Grid.Column="0" Content="Set Content"  Width="100" Height="20"/>
        <TextBox Name="txtbox1" Grid.Row="4" Grid.Column="0" Width="100" Height="20" />
        <TextBox Name="txtUniqueId" Grid.Row="4" Grid.Column="1" Width="100" Height="20"/>
        <local:LoadControl />
        <WrapPanel HorizontalAlignment="center" Grid.Row="6" Grid.Column="1" >
            <Button Content="OK"  Width="100" Height="20"/>

            <Button  Content="Cancel"  Width="100" Height="20"/>
        </WrapPanel>
    </Grid>
</Window>

В приведенном выше коде в DataGridCheckBoxColumn слово Command не отображается в предложении. Кто-нибудь может дать мне руководство, как решить эту задачу?

...