XamDataGrid column visibilty is not working using MVVM

橙三吉。 提交于 2019-12-23 10:09:18

问题


I'm trying to implement XamDataGrid column visibilty in a MVVM architecture and it does not seems to be working.

I'm doing the following:

Adding Visiblility property for an unbound field -

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

In my View Model, adding a proerty of Visibility type:

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

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

Then in the command handler using the following code:

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

InvokePropertyChanged("ShowCustomerIDColumn");

Anybody with a solution?

Cheers, Anshuman


回答1:


The main reason why visibility is not working here cause Visibility is not a dependency property in Fields Class(UnboundField class is derived from Field class) unlike other properties.

See visibility property

See Label/RowSpan Property that support binding

You need to set the visibility in c# code(either in some behavior or code behind event):

fieldlayout.Fields[node.Name].Visibility = node.Visibility ? Visibility.Visible : Visibility.Collapsed;


来源:https://stackoverflow.com/questions/11105461/xamdatagrid-column-visibilty-is-not-working-using-mvvm

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!