Xamarin Form - 如何在 UWP 中选中的另一个复选框上选中复选框 [英] Xamarin Form - How To checked the checkbox on another check box checked in UWP

查看:35
本文介绍了Xamarin Form - 如何在 UWP 中选中的另一个复选框上选中复选框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的应用程序显示数据库中DataGrid 的fetures 权限.为了实现这一点,我使用了 MyToolkit.Controls.DataGrid.现在我想要输出,如果用户选中管理员或更新/删除/创建复选框,然后查看和列表复选框选中反之亦然,并且我还想从数据库中设置复选框选中的值.提前致谢.

My application displays the fetures permissions on DataGrid from database. For realizing this I am using the MyToolkit.Controls.DataGrid. Now i want output for if user checked the admin or update/delete/create check box then View and list check box checked vice versa same for the and also i want to set checkbox checked value from database. thanks in advance.

图片

如果用户选中了创建/更新/删除,则应选中相同的行列表和视图

if user checked the create/update/delete then same row list and view should be checkbox checked

如果用户选中了视图复选框,则应选中选定的行列列表

if user checked the view check box then selected row column list should be checked

Datagrid xaml

  <Toolkit:DataGrid.Columns  >
            <!--Feature Column-->
            <Toolkit:DataGridTemplatedColumn CanSort="False"  >
                <Toolkit:DataGridTemplatedColumn.Header>
                    <TextBlock FontSize="16" Foreground="#000000" Width="280" Text="Feature" />
                </Toolkit:DataGridTemplatedColumn.Header>
                <Toolkit:DataGridTemplatedColumn.CellTemplate>
                    <DataTemplate >
                        <TextBlock FontSize="14" Padding="6 0 0 0" Foreground="#333333"   Width="280" Text="{Binding featureName}"/>
                    </DataTemplate>
                </Toolkit:DataGridTemplatedColumn.CellTemplate>
            </Toolkit:DataGridTemplatedColumn>

            <!--Create-->
            <Toolkit:DataGridTemplatedColumn Width="180" CanSort="False"  >
                <Toolkit:DataGridTemplatedColumn.Header>
                    <Border BorderBrush="Black" BorderThickness="1 0 0 0" >
                        <TextBlock FontSize="16" Padding="0" Foreground="#000000" Text="    Create" />
                    </Border>
                </Toolkit:DataGridTemplatedColumn.Header>
                <Toolkit:DataGridTemplatedColumn.CellTemplate>
                    <DataTemplate >
                        <CheckBox Margin="30,0,0,0" Style="{StaticResource CheckBoxStyle1}"  x:Name="CBCreate" DataContext="create" Tag ="{Binding featureId}" VerticalAlignment="Center"  VerticalContentAlignment="Center" HorizontalAlignment="Left" HorizontalContentAlignment="Left" Checked="CBCreate_Checked" />
                    </DataTemplate>
                </Toolkit:DataGridTemplatedColumn.CellTemplate>
            </Toolkit:DataGridTemplatedColumn>

            <!--Update-->
            <Toolkit:DataGridTemplatedColumn  Width="180" CanSort="False"  >
                <Toolkit:DataGridTemplatedColumn.Header>
                    <Border BorderBrush="Black" BorderThickness="1 0 0 0" >
                        <TextBlock FontSize="16" Foreground="#000000" Text="    Update" />
                    </Border>
                </Toolkit:DataGridTemplatedColumn.Header>
                <Toolkit:DataGridTemplatedColumn.CellTemplate>
                    <DataTemplate >
                        <CheckBox Margin="30 0 0 0" Style="{StaticResource CheckBoxStyle1}" IsChecked="{Binding Update}"  x:Name="CBUpdate" DataContext="update" Tag ="{Binding featureId}" VerticalAlignment="Center"  VerticalContentAlignment="Center" HorizontalAlignment="Left" HorizontalContentAlignment="Left"  />
                    </DataTemplate>
                </Toolkit:DataGridTemplatedColumn.CellTemplate>
            </Toolkit:DataGridTemplatedColumn>

            <!--Delete-->
            <Toolkit:DataGridTemplatedColumn  Width="180" CanSort="False"  >
                <Toolkit:DataGridTemplatedColumn.Header>
                    <Border BorderBrush="Black" BorderThickness="1 0 0 0" >
                        <TextBlock FontSize="16" Foreground="#000000" Text="    Delete" />
                    </Border>
                </Toolkit:DataGridTemplatedColumn.Header>
                <Toolkit:DataGridTemplatedColumn.CellTemplate>
                    <DataTemplate >
                        <CheckBox Margin="30,0,0,0" Style="{StaticResource CheckBoxStyle1}" IsChecked="{Binding Delete}"  x:Name="CBDelete" DataContext="delete"  Tag ="{Binding featureId}" VerticalAlignment="Center"  VerticalContentAlignment="Center" HorizontalAlignment="Left" HorizontalContentAlignment="Left" />
                    </DataTemplate>
                </Toolkit:DataGridTemplatedColumn.CellTemplate>
            </Toolkit:DataGridTemplatedColumn>

            <!--View-->
            <Toolkit:DataGridTemplatedColumn  Width="180" CanSort="False"  >
                <Toolkit:DataGridTemplatedColumn.Header>
                    <Border BorderBrush="Black" BorderThickness="1 0 0 0" >
                        <TextBlock FontSize="16" Foreground="#000000" Text="    View" />
                    </Border>
                </Toolkit:DataGridTemplatedColumn.Header>
                <Toolkit:DataGridTemplatedColumn.CellTemplate>
                    <DataTemplate >
                        <CheckBox Checked="CBView_Checked" Unchecked="CBView_Unchecked" IsChecked="{Binding View}" Indeterminate="CBView_Indeterminate" Margin="30,0,0,0" Style="{StaticResource CheckBoxStyle1}" x:Name="view" DataContext="{Binding featureName}" Tag ="view" AccessKey="{Binding index}" VerticalAlignment="Center"  VerticalContentAlignment="Center" HorizontalAlignment="Left" HorizontalContentAlignment="Left" />
                    </DataTemplate>
                </Toolkit:DataGridTemplatedColumn.CellTemplate>
            </Toolkit:DataGridTemplatedColumn>

            <!--List-->
            <Toolkit:DataGridTemplatedColumn  Width="180"  CanSort="False" x:Name="CLMList" >
                <Toolkit:DataGridTemplatedColumn.Header>
                    <Border BorderBrush="Black" BorderThickness="1 0 0 0" >
                        <TextBlock FontSize="16" Foreground="#000000" Text="    List" />
                    </Border>
                </Toolkit:DataGridTemplatedColumn.Header>
                <Toolkit:DataGridTemplatedColumn.CellTemplate>
                    <DataTemplate >
                        <CheckBox x:FieldModifier="public" IsChecked="{Binding List}" Margin="30,0,0,0"  Style="{StaticResource CheckBoxStyle1}" x:Name="CBList" DataContext="list" Tag ="{Binding featureId}" VerticalAlignment="Center"  VerticalContentAlignment="Center" HorizontalAlignment="Left" HorizontalContentAlignment="Left" Unchecked="CBList_Unchecked" Checked="CBList_Checked" />
                    </DataTemplate>
                </Toolkit:DataGridTemplatedColumn.CellTemplate>
            </Toolkit:DataGridTemplatedColumn>
        </Toolkit:DataGrid.Columns>
    </Toolkit:DataGrid>

推荐答案

以简单的方式,如果用户单击更新/创建/删除复选框,则应选中列表和查看复选框行,如果用户选中查看复选框,则应选中列表复选框.

in simple way if user click on update/create/delete check boxes then list and view check box row should be checked AND if user checked the view checkbox then List checkbox should be checked.

根据您的需求,您可以使用两种方式绑定来实现.详细代码请参考以下.以下代码是根据你提供的demo修改的,可以直接复制替换.

For your requirement, you could use two way bind to realize. For details code please refer the following. The following code was modified base on your provided demo, you could copy and replace directly.

FeatureData 类

public class FeatureData : INotifyPropertyChanged
{
    public int featureId { get; set; }
    public string featureName { get; set; }

    private bool _create;

    public bool Create
    {
        get { return _create; }
        set
        {
            _create = value;
            UpdateViewAndList(value);
            OnChanged();
        }
    }
    private bool _update;

    public bool Update
    {
        get { return _update; }
        set
        {
            _update = value;
            UpdateViewAndList(value);
            OnChanged();
        }
    }
    private bool _delete;

    public bool Delete
    {
        get { return _delete; }
        set
        {
            _delete = value;
            UpdateViewAndList(value);
            OnChanged();
        }
    }
    private bool _list;
    public bool List
    {
        get { return _list; }
        set
        {
            _list = value;
            OnChanged();
        }
    }
    private bool _view;
    public bool View
    {
        get { return _view; }
        set
        {
            _view = value;
            this.List = value;
            OnChanged();
        }
    }
    private void UpdateViewAndList(bool value)
    {
        if (value)
        {
            this.View = true;
            this.List = true;

        }
        else
        {
            this.View = false;
            this.List = false;
        }
    }
    //public string index { get; set; }
    public FeatureData(bool Create, bool Update, bool Delete, bool List, bool View, int featureId, string featureName)
    {
        this.featureId = featureId;
        this.featureName = featureName;
        this.Create = Create;
        this.Update = Update;
        this.Delete = Delete;
        this.List = List;
        this.View = View;
        //this.index = index;
    }

    private bool _IsSelected = false;
    public bool IsSelected { get { return _IsSelected; } set { _IsSelected = value; OnChanged("IsSelected"); } }

    #region INotifyPropertyChanged Members

    public event PropertyChangedEventHandler PropertyChanged;
    private void OnChanged([CallerMemberName]string prop = null)
    {
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs(prop));
    }

    #endregion

}

Xaml 绑定

<Toolkit:DataGrid.Columns>
    <!--  Feature Column  -->
    <Toolkit:DataGridTemplatedColumn CanSort="False">
        <Toolkit:DataGridTemplatedColumn.Header>
            <TextBlock
                Width="280"
                FontSize="16"
                Foreground="#000000"
                Text="Feature"
                />
        </Toolkit:DataGridTemplatedColumn.Header>
        <Toolkit:DataGridTemplatedColumn.CellTemplate>
            <DataTemplate>
                <TextBlock
                    Width="280"
                    Padding="6,0,0,0"
                    FontSize="14"
                    Foreground="#333333"
                    Text="{Binding featureName}"
                    />
            </DataTemplate>
        </Toolkit:DataGridTemplatedColumn.CellTemplate>
    </Toolkit:DataGridTemplatedColumn>

    <!--  Create  -->
    <Toolkit:DataGridTemplatedColumn Width="180" CanSort="False">
        <Toolkit:DataGridTemplatedColumn.Header>
            <Border BorderBrush="Black" BorderThickness="1,0,0,0">
                <TextBlock
                    Margin="15,0,0,0"
                    Padding="0"
                    FontSize="16"
                    Foreground="#000000"
                    Text="Create"
                    />
            </Border>
        </Toolkit:DataGridTemplatedColumn.Header>
        <Toolkit:DataGridTemplatedColumn.CellTemplate>
            <DataTemplate>
                <CheckBox
                    x:Name="CBCreate"
                    Margin="30,0,0,0"
                    HorizontalAlignment="Left"
                    VerticalAlignment="Center"
                    HorizontalContentAlignment="Left"
                    VerticalContentAlignment="Center"
                    IsChecked="{Binding Create,Mode=TwoWay}"
                    />
            </DataTemplate>
        </Toolkit:DataGridTemplatedColumn.CellTemplate>
    </Toolkit:DataGridTemplatedColumn>

    <!--  Update  -->
    <Toolkit:DataGridTemplatedColumn Width="180" CanSort="False">
        <Toolkit:DataGridTemplatedColumn.Header>
            <Border BorderBrush="Black" BorderThickness="1,0,0,0">
                <TextBlock
                    FontSize="16"
                    Foreground="#000000"
                    Text="    Update"
                    />
            </Border>
        </Toolkit:DataGridTemplatedColumn.Header>
        <Toolkit:DataGridTemplatedColumn.CellTemplate>
            <DataTemplate>
                <CheckBox
                    x:Name="CBUpdate"
                    Margin="30,0,0,0"
                    HorizontalAlignment="Left"
                    VerticalAlignment="Center"
                    HorizontalContentAlignment="Left"
                    VerticalContentAlignment="Center"
                    IsChecked="{Binding Update, Mode=TwoWay}"
                    />
            </DataTemplate>
        </Toolkit:DataGridTemplatedColumn.CellTemplate>
    </Toolkit:DataGridTemplatedColumn>

    <!--  Delete  -->
    <Toolkit:DataGridTemplatedColumn Width="180" CanSort="False">
        <Toolkit:DataGridTemplatedColumn.Header>
            <Border BorderBrush="Black" BorderThickness="1,0,0,0">
                <TextBlock
                    FontSize="16"
                    Foreground="#000000"
                    Text="    Delete"
                    />
            </Border>
        </Toolkit:DataGridTemplatedColumn.Header>
        <Toolkit:DataGridTemplatedColumn.CellTemplate>
            <DataTemplate>
                <CheckBox
                    x:Name="CBDelete"
                    Margin="30,0,0,0"
                    HorizontalAlignment="Left"
                    VerticalAlignment="Center"
                    HorizontalContentAlignment="Left"
                    VerticalContentAlignment="Center"
                    IsChecked="{Binding Delete, Mode=TwoWay}"
                    />
            </DataTemplate>
        </Toolkit:DataGridTemplatedColumn.CellTemplate>
    </Toolkit:DataGridTemplatedColumn>

    <!--  View  -->
    <Toolkit:DataGridTemplatedColumn Width="180" CanSort="False">
        <Toolkit:DataGridTemplatedColumn.Header>
            <Border BorderBrush="Black" BorderThickness="1,0,0,0">
                <TextBlock
                    FontSize="16"
                    Foreground="#000000"
                    Text="    View"
                    />
            </Border>
        </Toolkit:DataGridTemplatedColumn.Header>
        <Toolkit:DataGridTemplatedColumn.CellTemplate>
            <DataTemplate>
                <CheckBox
                    x:Name="view"
                    Margin="30,0,0,0"
                    HorizontalAlignment="Left"
                    VerticalAlignment="Center"
                    HorizontalContentAlignment="Left"
                    VerticalContentAlignment="Center"
                    IsChecked="{Binding View, Mode=TwoWay}"
                    Tag="view"
                    />
            </DataTemplate>
        </Toolkit:DataGridTemplatedColumn.CellTemplate>
    </Toolkit:DataGridTemplatedColumn>

    <!--  List  -->
    <Toolkit:DataGridTemplatedColumn
        x:Name="CLMList"
        Width="180"
        CanSort="False"
        >
        <Toolkit:DataGridTemplatedColumn.Header>
            <Border BorderBrush="Black" BorderThickness="1,0,0,0">
                <TextBlock
                    FontSize="16"
                    Foreground="#000000"
                    Text="    List"
                    />
            </Border>
        </Toolkit:DataGridTemplatedColumn.Header>
        <Toolkit:DataGridTemplatedColumn.CellTemplate>
            <DataTemplate>
                <CheckBox
                    x:Name="CBList"
                    Margin="30,0,0,0"
                    HorizontalAlignment="Left"
                    VerticalAlignment="Center"
                    HorizontalContentAlignment="Left"
                    VerticalContentAlignment="Center"
                    x:FieldModifier="public"
                    IsChecked="{Binding List, Mode=TwoWay}"
                    />
            </DataTemplate>
        </Toolkit:DataGridTemplatedColumn.CellTemplate>
    </Toolkit:DataGridTemplatedColumn>
</Toolkit:DataGrid.Columns>

这篇关于Xamarin Form - 如何在 UWP 中选中的另一个复选框上选中复选框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆