WPF中判斷DataGrid增加復選框和頭部全選,以及判斷哪一行的checkbox被選中


直接代碼,不廢話

<my:DataGrid AutoGenerateColumns="False" IsReadOnly="True" Margin="271,35,12,40" Name="dataGrid1" xmlns:my="http://schemas.microsoft.com/wpf/2008/toolkit" Grid.Row="1">
            <my:DataGrid.Columns>
                <my:DataGridTemplateColumn Header="全選/全不選" Width="110">
                    <my:DataGridTemplateColumn.HeaderStyle>
                        <Style TargetType="my:DataGridColumnHeader">
                            <Setter Property="Background">
                                <Setter.Value>
                                    <LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
                                        <GradientStop Color="White" Offset="0" />
                                        <GradientStop Color="LightPink" Offset="0.5" />
                                        <GradientStop Color="White" Offset="1" />
                                    </LinearGradientBrush>
                                </Setter.Value>
                            </Setter>
                            <Setter Property="Foreground" Value="Black" />
                            <Setter Property="FontSize" Value="14" />
                        </Style>
                    </my:DataGridTemplateColumn.HeaderStyle>
                    <my:DataGridTemplateColumn.HeaderTemplate>
                        <DataTemplate>
                            <CheckBox Checked="ckbSelectedAll_Checked" Margin="10,0" Name="ckbSelectedAll" Unchecked="ckbSelectedAll_Unchecked">全選/全不選</CheckBox>
                        </DataTemplate>
                    </my:DataGridTemplateColumn.HeaderTemplate>
                    <my:DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <CheckBox HorizontalAlignment="Center" IsChecked="{Binding IsChecked, Mode=TwoWay}" VerticalAlignment="Center" />
                        </DataTemplate>
                    </my:DataGridTemplateColumn.CellTemplate>
                </my:DataGridTemplateColumn>
                <my:DataGridTextColumn Binding="{Binding xx}" Header="xx">
                    <my:DataGridTextColumn.HeaderStyle>
                        <Style TargetType="my:DataGridColumnHeader">
                            <Setter Property="Background">
                                <Setter.Value>
                                    <LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
                                        <GradientStop Color="White" Offset="0" />
                                        <GradientStop Color="LightGreen" Offset="0.5" />
                                        <GradientStop Color="White" Offset="1" />
                                    </LinearGradientBrush>
                                </Setter.Value>
                            </Setter>
                            <Setter Property="Foreground" Value="Black" />
                            <Setter Property="FontSize" Value="14" />
                        </Style>
                    </my:DataGridTextColumn.HeaderStyle>
                </my:DataGridTextColumn>
                <my:DataGridTextColumn Binding="{Binding xx}" Header="xx">
                    <my:DataGridTextColumn.HeaderStyle>
                        <Style TargetType="my:DataGridColumnHeader">
                            <Setter Property="Background">
                                <Setter.Value>
                                    <LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
                                        <GradientStop Color="White" Offset="0" />
                                        <GradientStop Color="Yellow" Offset="0.5" />
                                        <GradientStop Color="White" Offset="1" />
                                    </LinearGradientBrush>
                                </Setter.Value>
                            </Setter>
                            <Setter Property="Foreground" Value="Black" />
                            <Setter Property="FontSize" Value="14" />
                        </Style>
                    </my:DataGridTextColumn.HeaderStyle>
                </my:DataGridTextColumn>
            </my:DataGrid.Columns>
        </my:DataGrid>

 

 

        private void ckbSelectedAll_Checked(object sender, RoutedEventArgs e)
        {
            foreach (DataRow row in dt.Rows)
            {
                row["IsChecked"] = true;
            }
        }

        private void ckbSelectedAll_Unchecked(object sender, RoutedEventArgs e)
        {
            foreach (DataRow row in dt.Rows)
            {
                row["IsChecked"] = false;
            }
        }

 

當然,華麗的效果,還是要配合美工實現,可是我目前只有一個人孤軍奮戰,而且以前沒接觸過c#,只花了三四天時間看了下c#和wpf,寫的很簡陋,不要見笑。我還在繼續學習中。(之所以只花了三四天時間看了下,是因為我更喜歡實際動手做一下。我知道,我從來不擅長於考試、理論之類的東西,但我也十分的清楚,我能理解並將其付之於實踐,這就是我的強項。)

 


出處:https://blog.csdn.net/Alsmile/article/details/6593440

=========================================================================

WPF中判斷dataGrid的哪一行的checkbox被選中

先看看界面:

 

代碼:

<DataGridCheckBoxColumn Header="操作" Width="10*" Binding="{Binding IsChecked}"/>
<DataGridTextColumn Header="id" Width="10*" Binding="{Binding Path=ui_id, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Visibility="Hidden"/>
     <DataGridTextColumn Header="工號" Width="12*" Binding="{Binding Path=ui_number, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
     <DataGridTextColumn Header="姓名" Width="10*" Binding="{Binding Path=ui_name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
......

 

 點擊最上面的【刪除】后,如何判斷是哪一項唄選中?求指教!!!
后台代碼:
            int count = dataGrid1.Items.Count;
            DataRowView[] drv = new DataRowView[count];
            DataTable dt = (dataGrid1.ItemsSource as DataView).Table;
            
            for (int i = 0; i < count; i++)
            {
                 drv[i] = dataGrid1.Items[i] as DataRowView;
            }

 

你datagrid的數據是綁定的模型的話 直接模型設置個屬性,然后datatemplate里的checkbox綁定這個屬性,雙向的,然后點刪除的時候從你的數據集合里判斷哪個模型的這個屬性被設置為true就可以了

 

 

出處:https://bbs.csdn.net/topics/391875244

========================================================================

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM