当ViewModel-Property中的属性为null或default-value时,折叠Datagrid上的列

时间:2017-07-10 18:45:27

标签: c# wpf xaml mvvm datagrid

我有以下问题或情况: 我有一个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代码中的事件触发器一样?

0 个答案:

没有答案