Silverlight 基于DataContext属性更改RowDetailsTemplate中子控件的可见性

Silverlight 基于DataContext属性更改RowDetailsTemplate中子控件的可见性,silverlight,data-binding,datagrid,Silverlight,Data Binding,Datagrid,我有一个包含RowDetailsTemplate的Silverlight数据网格。RowDetailsTemplate包含一个带有多个TabItems的TabControl。DataGrid将与Contact类型的项绑定。Contact有一个名为ContactType的属性。当ContactType为Client时,我想隐藏几个选项卡项。理想情况下,我希望通过数据绑定来实现这一点,但我还没有找到任何方法来实现这一点 使用将ContactType转换为Visiblity的值转换器将RowDetai

我有一个包含RowDetailsTemplate的Silverlight数据网格。RowDetailsTemplate包含一个带有多个TabItems的TabControl。DataGrid将与Contact类型的项绑定。Contact有一个名为ContactType的属性。当ContactType为Client时,我想隐藏几个选项卡项。理想情况下,我希望通过数据绑定来实现这一点,但我还没有找到任何方法来实现这一点

使用将ContactType转换为Visiblity的值转换器将RowDetailTemplate中的TabItem.Visibility绑定到ContactType。您应该将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
}
}

名称空间演示
{
使用制度;
使用System.Windows;
使用System.Windows.Data;
公共枚举联系人类型
{
客户
};
/// 
///值转换器
/// 
公共类ContactTypeConverter:IValueConverter
{
#区域转换器成员
公共对象转换(对象值、类型targetType、对象参数、System.Globalization.CultureInfo区域性)
{
var contactType=(contactType)值;
开关(接触式)
{
案例联系人类型。客户端:
返回可见性。可见;
违约:
返回可见性。折叠;
}
}
公共对象转换回(对象值、类型targetType、对象参数、System.Globalization.CultureInfo区域性)
{
返回dependencProperty.unset值;
}
#端区
}
}