我有以下问题或情况: 我有一个viewmodel列表,其中包含一些属性和一个datagrid,其ItemSource是ViewModel-List。
我想要折叠那些为空或具有默认值的列。 ViewModel.cs
public class ViewModel : INotifyPropertyChanged
{
private double _numberData;
private string _description;
public double NumberData
{
get { return _numberData; }
set
{
_numberData = value;
PropertyChanged(this, new PropertyChangedEventArgs(nameof(NumberData)));
}
}
public string Description
{
get { return _description; }
set
{
_description = value;
PropertyChanged(this, new PropertyChangedEventArgs(nameof(NumberData)));
}
}
public event PropertyChangedEventHandler PropertyChanged = delegate { };
}
以下示例查看:
<DataGrid Grid.Row="2" x:Name="_dataGrid" AutoGenerateColumns="False" IsReadOnly="True">
<DataGrid.Columns>
<DataGridTextColumn Header="Column 1" Binding="{Binding Description}" />
<DataGridTextColumn Header="Column 2" Binding="{Binding NumberData}" />
</DataGrid.Columns>
</DataGrid>
如果可能,解决方案应该是可扩展的。 所以,是的,一个演示者,它控制每个条目的检查,如:
MyView.SetNumberDataColumnVisibility(viewModels.Any(vm => vm.NumberData > 0));
(理论上)是一个选项,但每次您希望新列上的行为时,您都必须扩展接口/视图和演示者。
是否有更好的或更清晰的方式..就像xaml代码中的事件触发器一样?