我有一個包含 3 個文本列和一個復選框列的 DataGrid:
<DataGrid x:Name="EquipmentArray" Style="{StaticResource DataGridEquipment}">
<DataGrid.Columns>
<DataGridTextColumn Header="Description" Binding="{Binding Description}"/>
<DataGridTextColumn Header="IP Adress" Binding="{Binding IPAdress}"/>
<DataGridTextColumn Header="Connection Type" Binding="{Binding ConnectionType}"/>
<DataGridTemplateColumn Header="Choice">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGridColumns>
</DataGrid>
我想這樣當用戶雙擊一行時,它會檢查相應行中的復選框。
private void DataGridRow_MouseDown(object sender, MouseButtonEventArgs e)
{
if (e.ClickCount == 2)
{
// checking the checkbox in the sender's row
}
}
我怎么能這樣做,最好的方法是什么?
uj5u.com熱心網友回復:
您應該IsEnabled向資料模型添加一個布爾屬性,并將其系結到CheckBox:
資料項.cs
class DataItem : INotifyPropertyChanged
{
// Let property raise the INotifyPropertyChanged.PropertyChanged event
public bool IsEnabled { get; set; }
}
主視窗.xaml
<DataGrid ItemsSource="{Binding DataItems}">
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<EventSetter Event="PreviewMouseDoubleClick"
Handler="OnDataGridRowPreviewMouseDoubleClick" />
</Style>
</DataGrid.RowStyle>
<DataGrid.Columns>
<DataGridTemplateColumn Header="Choice">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding IsEnabled}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGridColumns>
</DataGrid>
主視窗.xaml.cs
private void OnDataGridRowPreviewMouseDoubleClick(object sender, MouseButtonEventArgs e)
{
var row = sender as DataGridRow;
(row.Item as DataItem).IsEnabled = true;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/475816.html
上一篇:在執行任務時解凍UI
下一篇:使用Prism,我可以使用Microsoft的DependencyInjection而不是使用Prism.Unity或Prism.DryLoc嗎?
