我需要在wpf中创建一个包含2列,邮件和复选框的数据网格,之后我想要显示邮件并在它们附近显示一个复选框,我需要一个按钮来生成以下内容:所有已检查的复选框都在邮件附近会得到一封电子邮件(我有这个功能)
我试图用2列,bool和字符串制作一个数据表并在那里显示邮件,我的问题是,当我检查我想要选择的邮件附近的复选框时,当我按下按钮并在datagrid行上运行时, boolean仍然是false而不是true,因为那不会发送电子邮件
<DataGrid HorizontalAlignment="Left" Height="227" Margin="43,146,0,0"
VerticalAlignment="Top" Width="448"
Grid.ColumnSpan="2" Name="Datagrid1" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="mails" Width="*" IsReadOnly="True" Binding="{Binding Path='Text'}"/>
<DataGridTemplateColumn Header ="send or not" Width="*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox Name="CheckboxMail"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
那就是数据网格。
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("Selected", typeof(bool))); //this will show checkboxes
dt.Columns.Add(new DataColumn("Text", typeof(string))); //this will show text
Datagrid1.DataContext = dt;
foreach (string s in mails)
{
DataRow r = dt.NewRow();
r[0] = (bool)false;
r[1] = s;
dt.Rows.Add(r);
}
Datagrid1.ItemsSource = dt.DefaultView;
创建数据表和数据网格
当我按下按钮时:
foreach(DataRowView r in Datagrid1.ItemsSource)
{
try
{
if(((Boolean)r[0]) == true)
{
MailMassage ms = new MailMassage((string)r[1]);
ms.SendMail();
}
}
我希望程序能够向datagrid中的每个邮件发送一封电子邮件,其中有一个复选复选框,感谢您的帮助。
将CheckBox
中的CellEditingTemplate
绑定到Selected
列:
<DataGridTemplateColumn Header ="send or not" Width="*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Selected}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<CheckBox Name="CheckboxMail" IsChecked="{Binding Selected}"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
您正在绑定Text但未选中,因此您的检查不会传播到datarowview。
你应该将你的复选框的IsChecked绑定为
<CheckBox IsChecked="{Binding Selected}"/>
您可能还需要,mode = TwoWay对该绑定。