2012-06-19 28 views
5

我想在MVVM體系結構中實現XamDataGrid列可見性,它似乎並沒有工作。XamDataGrid列可見性無法使用MVVM

我做了以下內容:

添加公開程度屬性未綁定的領域 -

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

在我看來模型,添加可視類型的proerty:

//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"); 

有解決方案的人嗎?

乾杯, Anshuman

回答

3

我不認爲UnboundField是元素樹的一部分,所以你不能將它的屬性就像你通常會綁定。約什史密斯寫了一篇關於將它綁定到Fields的博客文章http://blogs.infragistics.com/blogs/josh_smith/archive/2008/06/06/binding-a-xamdatagrid-field-property.aspx

+0

Thanks Hoang。我不喜歡這種方法,但它像一個魅力! – Anshuman

+0

不知道這是否是原因。它可能是相對的,但不是確切的原因。有在可能被綁定到財產沒有限制領域的其他財產。 。 –

1

可見性不在這裏工作的主要原因導致不同於其他屬性,可見性不是Fields類中的依賴屬性(UnboundField類是從Field類派生的)

見visibility屬性

See visibility property

見標記/ ROWSPAN屬性,支持綁定

See Label Property that support binding

你需要設置在C#代碼能見度(無論是在某些行爲或代碼中ind事件):

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

訪問更精確的代碼:'myXamDataGrid.FieldLayouts [0]點域[ 「myFieldName」]能見度= myVisibility' (注:有時索引可以不是0;注2:你有定義'Name'屬性(Unound)字段) – Beauty