C# wpf datagrid:禁用datagridtemplatecolumn
我有一个datagrid,其中一列作为模板列,我在其中添加了一个按钮。 我的xaml是:C# wpf datagrid:禁用datagridtemplatecolumn,c#,wpf,xaml,datagrid,C#,Wpf,Xaml,Datagrid,我有一个datagrid,其中一列作为模板列,我在其中添加了一个按钮。 我的xaml是: <dg:DataGridTemplateColumn Header="Generate SlNo" Width="100"> <dg:DataGridTemplateColumn.CellTemplate> <DataTemplate> <Button Name="btnGenerateSlNO" Width="100
<dg:DataGridTemplateColumn Header="Generate SlNo" Width="100">
<dg:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Name="btnGenerateSlNO" Width="100" IsEnabled="{Binding IsSerialNoProduct,Mode=TwoWay}" Click="btnGenerateSlNO_Click">Generate SlNo</Button>
</DataTemplate>
</dg:DataGridTemplateColumn.CellTemplate>
</dg:DataGridTemplateColumn>
现在,我想基于属性IsSerialNoProduct启用和禁用按钮。我的问题是,当窗体首次加载时,按钮显示为已启用。只有在单击datagrid中的单元格时,属性才获得值,因为只有我的类构造函数在工作。我想在窗体加载时禁用按钮如何实现这一点
我想根据IsSerialNoProduct属性启用和禁用按钮
不要这样做。WPF使用了优秀的概念。如果您使用的是数据绑定,您可以使用像或这样的
ICommand
实现,并将bind按钮绑定到该命令:
public class clsPurchaseBillEntryList
{
// ...
public clsPurchaseBillEntryList()
{
DoSomethingCommand = new RelayCommand(DoSomething, () => IsSerialNoProduct);
}
private void DoSomething()
{
}
public RelayCommand DoSomethingCommand { get; private set; }
}
然后,在XAML中编写:
<Button Name="btnGenerateSlNO" Width="100" Command="{Binding DoSomethingCommand}">Generate SlNo</Button>
生成SlNo
在xaml中:
<Datagrid Binding={Binding SerialNumber}>
<dg:DataGridTemplateColumn Header="Generate SlNo" Width="100">
<dg:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Name="btnGenerateSlNO" Width="100" IsEnabled="{Binding IsSerialNoProduct,Mode=TwoWay}" Click="btnGenerateSlNO_Click">Generate SlNo</Button>
</DataTemplate>
</dg:DataGridTemplateColumn.CellTemplate>
</dg:DataGridTemplateColumn>
</Datagrid>
更改IsSerialNoProduct的值将给出预期的响应
注意:未测试的代码当我们在datagrid中单击一个单元格时,它会工作,但我的问题是当加载表单时datagrid按钮显示为enable
<Datagrid Binding={Binding SerialNumber}>
<dg:DataGridTemplateColumn Header="Generate SlNo" Width="100">
<dg:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Name="btnGenerateSlNO" Width="100" IsEnabled="{Binding IsSerialNoProduct,Mode=TwoWay}" Click="btnGenerateSlNO_Click">Generate SlNo</Button>
</DataTemplate>
</dg:DataGridTemplateColumn.CellTemplate>
</dg:DataGridTemplateColumn>
</Datagrid>
public ObservableCollection<clsPurchaseBillEntryList > SerialNumber { get; set; }
public class clsPurchaseBillEntryList
{
public bool IsSerialNoProduct { get; set; }
}