【问题标题】:Changing visibility of child controls in RowDetailsTemplate based on DataContext property基于 DataContext 属性更改 RowDetailsTemplate 中子控件的可见性
【发布时间】:2010-12-04 01:41:54
【问题描述】:

我有一个包含 RowDetailsTemplate 的 Silverlight DataGrid。 RowDetailsTemplate 包含一个带有多个 TabItem 的 TabControl。 DataGrid 将与 Contact 类型的项目绑定。 Contact 有一个名为 ContactType 的属性。当 ContactType 为 Client 时,我希望隐藏几个 TabItems。理想情况下,我想通过 DataBinding 做到这一点,但我还没有找到这样做的方法。

【问题讨论】:

    标签: silverlight data-binding datagrid


    【解决方案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
    }
    }
    

    【讨论】:

      猜你喜欢
      • 2010-12-01
      • 1970-01-01
      • 2011-12-27
      • 2017-04-17
      • 2014-04-23
      • 2023-04-09
      • 1970-01-01
      • 2011-12-06
      • 1970-01-01
      相关资源
      最近更新 更多