5

我正在尝试在 MVVM 体系结构中实现 XamDataGrid 列可见性,但它似乎不起作用。

我正在执行以下操作:

为未绑定的字段添加 Visiblility 属性 -

<igDP:UnboundField Name="gridCustomerId" 
                   Label="ID" 
                   Binding="{Binding customerid, 
                                     Mode=TwoWay, 
                                     UpdateSourceTrigger=PropertyChanged}" 
                   Visibility="{Binding ShowCustomerIDColumn, 
                                        Mode=TwoWay, 
                                        UpdateSourceTrigger=PropertyChanged}">

在我的视图模型中,添加一个可见性类型的属性:

//ToShow CustomerID Column
private Visibility showCustomerIDColumn; 
public Visibility ShowCustomerIDColumn 
{
    get
    {
        return showCustomerIDColumn; 
    }

    set
    {
        showCustomerIDColumn=value; 
        InvokePropertyChanged("ShowCustomerIDColumn"); 
    }    
}

然后在命令处理程序中使用以下代码:

if(ShowCustomerIDColumn == Visibility.Hidden) 
    ShowCustomerIDColumn = Visibility.Visible; 
else
    ShowCustomerIDColumn = Visibility.Hidden; 

InvokePropertyChanged("ShowCustomerIDColumn");

有人有解决方案吗?

干杯,安舒曼

4

1 回答 1

3

可见性在这里不起作用的主要原因是与其他属性不同,可见性不是 Fields 类中的依赖属性(UnboundField 类派生自 Field 类)

查看可见性属性

查看可见性属性

请参阅支持绑定的 Label/RowSpan 属性

请参阅支持绑定的标签属性

您需要在 c# 代码中设置可见性(在某些行为或事件背后的代码中):

fieldlayout.Fields[node.Name].Visibility = node.Visibility ? Visibility.Visible : Visibility.Collapsed;
于 2016-01-22T08:28:28.217 回答