Изменение видимости дочерних элементов управления в RowDetailsTemplate на основе свойства DataContext - PullRequest
2 голосов
/ 05 октября 2009

У меня есть Silverlight DataGrid, который содержит RowDetailsTemplate. RowDetailsTemplate содержит TabControl с несколькими TabItems. DataGrid будет связан с элементами типа Contact. У контакта есть свойство ContactType. Я хотел бы, чтобы некоторые из TabItems были скрыты, когда ContactType является клиентом. В идеале я хотел бы сделать это через DataBinding, но я пока не нашел этого.

1 Ответ

1 голос
/ 06 октября 2009

Свяжите TabItem.Visibility в RowDetailTemplate с ContactType, используя преобразователь значений, который преобразует ContactType в Visiblity. Вы должны добавить ContactTypeConverter к приложению или странице в качестве ресурса.

<TabItem 
    Visibility="{Binding ContactType, Converter={StaticResource ContactTypeConverter}}"/>

namespace Demo
{
using System;
using System.Windows;
using System.Windows.Data;

public enum ContactType
{
    Client
};

/// <summary>
/// A Value converter
/// </summary>
public class ContactTypeConverter : IValueConverter
{
    #region IValueConverter Members

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        var contactType = (ContactType) value;

        switch (contactType)
        {
            case ContactType.Client:
                return Visibility.Visible;

            default:
                return Visibility.Collapsed;
        }
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return DependencyProperty.UnsetValue;
    }

    #endregion
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...