我有一个包含RowDetailsTemplate的Silverlight DataGrid。 RowDetailsTemplate包含一个带有多个TabItem的TabControl。 DataGrid将与Contact类型的项绑定。 Contact有一个名为ContactType的属性。当ContactType是Client时,我想隐藏几个TabItems。理想情况下,我想通过DataBinding来做到这一点,但我还没有找到这样做。
答案 0 :(得分:1)
使用将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
}
}