2013-11-21 148 views
0

我有一列作爲模板列的datagrid,並且我向它添加了一個按鈕。 我的XAML是:wpf datagrid:禁用datagridtemplatecolumn

<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"); 
     } 
    } 
} 

現在我想根據物業IsSerialNoProduct.My問題,啓用和禁用按鈕是當窗體首先加載按鈕顯示爲enabled。只有當我單擊數據網格中的單元格時,屬性纔會獲得值,因爲只有我的類構造函數有效。我想禁用表單上的按鈕如何完成此操作?

回答

1

我想啓用和禁用基於屬性IsSerialNoProduct

按鈕不要這樣做。
WPF使用commands的優秀概念。如果您使用數據綁定,您可以使用ICommand實現比如DelegateCommandRelayCommand和綁定按鈕,該命令:

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> 
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> 

在視圖模型:

public ObservableCollection<clsPurchaseBillEntryList > SerialNumber { get; set; } 

類clsPurchaseBillEntryList:

public class clsPurchaseBillEntryList 
{ 
    public bool IsSerialNoProduct { get; set; } 
} 

改變IsSerialNoProduct的值將給出預期的響應。

注:未經測試的代碼

+0

其工作當我們點擊DataGrid中的一個單元格,但我的問題是,當加載的形式DataGrid的按鈕顯示爲啓用 – Mussammil

相關問題