2013-11-21 6 views
0

У меня есть datagrid с одним столбцом в качестве столбца шаблона, и я добавил к нему кнопку. Мой XAML является:wpf datagrid: disable 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 когда форма первой загрузки кнопка показало, что включено. Свойство получило значение только тогда, когда я нажимаю ячейку в datagrid, потому что обработан только мой конструктор классов. Я хочу отключить кнопку на загрузке формы, как это сделать?

ответ

1

Я хочу, чтобы включить и отключить кнопку на основе IsSerialNoProduct собственности

Не делайте этого.
WPF использует отличную концепцию commands. Если вы используете привязки данных, вы можете использовать ICommand реализации как DelegateCommand или RelayCommand, и кнопка привязки к этой команде:

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> 

В ViewModel:

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

Класс clsPurchaseBillEntryList:

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

Изменение значения IsSerialNoProduct даст ожидаемый ответ.

Примечания: Непроверенный код

+0

его работа, когда мы щелкните ячейку в сетке, но моя проблема в том, когда форма загружается кнопка DataGrid предъявляются, как включить – Mussammil

Смежные вопросы