Чтобы решить первую часть отображения и скрытия Button
в зависимости от того, установлен ли флажок CheckBox
, необходимо сначала реализовать интерфейс INotifyPropertyChanged в своем классе ChangesModel
и повысить значение * 1006. * событие, когда установлено свойство Validated
:
public class ChangesModel : INotifyPropertyChanged
{
public int ID { get; set; }
public string Facility { get; set; }
public string Controller { get; set; }
public string ParameterName { get; set; }
public string OldValue { get; set; }
public string NewValue { get; set; }
public DateTime ChangeDate { get; set; }
private bool _validated;
public bool Validated
{
get { return _validated; }
set { _validated = value; NotifyPropertyChanged(); }
}
public DateTime ValidationDate { get; set; }
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
Затем можно связать свойство Button
Visibility
со свойством Validated
source и использовать конвертер для преобразования между * Значение 1014 * и значение перечисления Visibility
:
<DataGridTemplateColumn Header="Validate">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<DataTemplate.Resources>
<BooleanToVisibilityConverter x:Key="converter" />
</DataTemplate.Resources>
<Button x:Name="Validate_Btn" cal:Message.Attach="Validate"
Visibility="{Binding Validated, Converter={StaticResource converter}}">Validate</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
Вы также можете установить UpdateSourcePropertyTrigger
в привязке CheckBox
для свойства источника, которое должно быть установлено немедленно:
<CheckBox IsChecked="{Binding Path=Validated, UpdateSourceTrigger=PropertyChanged}" />
Чтобы ваш Validate()
вызывался при нажатии кнопки, вы можете привязать присоединенное свойство Bind.Model
к модели представления:
<Button x:Name="Validate"
cal:Bind.Model="{Binding DataContext,
RelativeSource={RelativeSource AncestorType=DataGrid}}">Validate</Button>
Для объединения привязок требуется указать источник Visibility
переплет:
<Button x:Name="Validate"
Visibility="{Binding DataContext.Validated,
Converter={StaticResource converter}, RelativeSource={RelativeSource AncestorType=DataGridCell}}"
cal:Bind.Model="{Binding DataContext, RelativeSource={RelativeSource AncestorType=DataGrid}}">Validate</Button>