我有一个数据网格,其中一列作为模板列,我向它添加了一个按钮。 我的xaml是:
<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>
我的数据类:
public class clsPurchaseBillEntryList : INotifyPropertyChanged, IDataErrorInfo
{
private bool _IsSerialNoProduct;
public bool IsSerialNoProduct
{
get { return _IsSerialNoProduct; }
set
{
_IsSerialNoProduct = value;
OnPropertyChanged("IsSerialNoProduct");
}
}
}
现在我想基于Property IsSerialNoProduct启用和禁用该按钮。我的问题是当表单首次加载时按钮显示为启用。该属性仅在我单击datagrid中的单元格时才获得值,因为只有我的类构造函数是否工作。我想在表单加载时禁用该按钮如何完成此操作?
答案 0 :(得分:1)
我想根据Property IsSerialNoProduct
启用和禁用按钮
不要这样做。
WPF使用了commands的优秀概念。如果您正在使用数据绑定,则可以使用DelegateCommand
或RelayCommand
之类的ICommand
实现,并将按钮绑定到该命令:
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>
答案 1 :(得分:0)
在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>
在ViewModel中:
public ObservableCollection<clsPurchaseBillEntryList > SerialNumber { get; set; }
Class clsPurchaseBillEntryList:
public class clsPurchaseBillEntryList
{
public bool IsSerialNoProduct { get; set; }
}
更改IsSerialNoProduct的值将给出预期的响应。
注意:未经测试的代码