0
常規的DataGridCheckBoxColumn似乎不允許使用命令,所以我決定使用DataGridTemplateColumn和一個複選框。問題是我的命令被激發之前,可以選擇或取消選擇複選框爲什麼會發生這種情況?爲什麼我的命令在我的CheckBox在DataGridTemplateColumn中被選中之前觸發?
我datGrid
<DataGrid x:Name="gridSpecifications" AutoGenerateColumns="False" ItemsSource="{Binding MyEntityList}">
<DataGrid.Resources>
<DataTemplate DataType="{x:Type DB:CoreNamedEntity}">
<TextBlock Text="{Binding Name}"></TextBlock>
</DataTemplate>
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridTextColumn Header="Id" Width="auto" Binding="{Binding Path=Id}"></DataGridTextColumn>
<DataGridTemplateColumn Header="Description">
<DataGridTemplateColumn.CellTemplateSelector>
<TS:PhotometricTypeSelector
DataTemplateOne="{StaticResource PhantomNameTemplate}"
DataTemplateTwo="{StaticResource PhantomCountTemplate}">
</TS:PhotometricTypeSelector>
</DataGridTemplateColumn.CellTemplateSelector>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Hidden">
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding Hidden}" Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=DataGrid}, Path=DataContext.HideCommand}" CommandParameter="{Binding}"></CheckBox>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding Hidden}" IsEnabled="False"></CheckBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
這是命令代碼
private void HideCommandExecute(object param)
{
InputsAccessor inputsAccessor = new InputsAccessor();
var type = param.GetType();
int id;
string name = type.Name;
var ParamId = type.GetProperty("Id").GetValue(param, null);
bool ParamHidden = (bool)type.GetProperty("Hidden").GetValue(param, null);
id = (int)ParamId;
....
}
檢查屬性,它會導致自動回發? – alykins 2014-09-23 18:02:56
在命令中顯示代碼 – 2014-09-23 18:47:37