2012-06-19 2 views
5

Я пытаюсь реализовать столбец XamDataGrid visibilty в архитектуре MVVM и, похоже, он не работает.Столбец XamDataGrid visibilty не работает с использованием 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 является частью дерева элементов, так что вы не можете связать его свойство, как обычно. Джош Смит написал сообщение в блоге о привязке его к полям по адресу http://blogs.infragistics.com/blogs/josh_smith/archive/2008/06/06/binding-a-xamdatagrid-field-property.aspx.

+0

Thanks Hoang. Мне не понравился этот метод, но он работает как шарм !!! – Anshuman

+0

не уверен, если это причина. Это может быть относительная, но не точная причина. В полях Unbound есть другое свойство, которое может быть привязано к свойству. –

1

Основная причина, по которой видимость здесь не работает Причина Видимость не является свойством зависимостей в Fields Class (класс UnboundField получен из класса Field) в отличие от других свойств.

См обзорность свойство

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] .Fields [" myFieldName "]. Видимость = myVisibility' (примечание: иногда индекс может отличаться от 0; примечание 2: вы определяете свойство' Name' для поле (Unound)) – Beauty

 Смежные вопросы

  • Нет связанных вопросов^_^