I have a datagrid with binding to some collection
ObservableCollection<SpecRowViewModel> rows;
Items woul be
public class SpecRowViewModel
{
public ISpecificationItem Item { get; set; }
public virtual string Name { get { return Item.Name; } set { Item.Name = value; } }
public virtual string Description { get { return Item.Designation; } set { Item.Designation = value; } }
public SpecRowViewModel() {}
public SpecRowViewModel(ISpecificationItem item) { Item = item; }
}
public class RefMaterialRow : SpecRowViewModel
{
public override string Name { get { return Item.MaterialPanelData.MaterialNameInBase; } set { Item.MaterialPanelData.MaterialNameInBase = value; } }
public override string Description { get { return Item.MaterialPanelData.MaterialDesignationInBase; } set { Item.MaterialPanelData.MaterialDesignationInBase = value; } }
public RefMaterialRow(ISpecificationItem mat) : base() { Item = mat; }
}
public class RefStandartRow: SpecRowViewModel
{
public override string Name { get { return Item.MaterialPanelData.MaterialNameInBase; } set { Item.MaterialPanelData.MaterialNameInBase = value; } }
public override string Description { get { return Item.MaterialPanelData.MaterialDesignationInBase; } set { Item.MaterialPanelData.MaterialDesignationInBase = value; } }
public RefStandartRow(ISpecificationItem mat) : base() { Item = mat; }
}
DataGrid cell with converter
<DataGridTemplateColumn x:Name="fd"
Width="150"
Header="Обозначение">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0"
Grid.RowSpan="2"
Grid.Column="0"
HorizontalAlignment="Left"
Text="{Binding Path=Description}"
TextWrapping="Wrap" />
<Button Grid.Row="0"
Grid.Column="1"
Visibility="{Binding Converter={StaticResource ButtonVisibleConverter}}" />
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
I need to make the buttons not all cells of the table but only in some. I did Converter visibility but it works on all cells in the row. How do I make a button visible only at some cells?
public class SpecItemToButtonVisibleConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
var intValue = (SpecRowViewModel) value;
if (intValue.Item == null) return Visibility.Collapsed;
if (intValue is RefMaterialRow)
{
}
switch (intValue.Item.Type)
{
case EDocumentSection.Parts:
return Visibility.Visible;
case EDocumentSection.Materials:
return Visibility.Visible;
case EDocumentSection.StandartParts:
return Visibility.Visible;
}
return Visibility.Collapsed;
}
public object ConvertBack(object value, Type targetType, object parameter,
System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
In the picture I disclosed more clearly