【问题标题】:Expand/Collapse button in a Silverlight 5 DataGrid with Ancestor RelativeSource Binding具有祖先相对源绑定的 Silverlight 5 DataGrid 中的展开/折叠按钮
【发布时间】:2012-02-05 07:30:26
【问题描述】:

我发现了几篇关于在 SL3 和 SL4 中实现展开/折叠的文章,这些文章实际上是缺少“祖先相对源绑定”的解决方法。所以现在 SL5 出来了,我想知道 SL5 是如何做到的。

这是 SL4 的答案: Expand/Collapse button in a Silverlight DataGrid

【问题讨论】:

    标签: c# silverlight data-binding datagrid silverlight-5.0


    【解决方案1】:

    使用 SL5 RelativeSource 很容易做到:

    <sdk:DataGrid ItemsSource="{Binding Items}" 
       AutoGenerateColumns="False" 
       RowDetailsVisibilityMode="Collapsed">
       <sdk:DataGrid.Resources>
         <SL5:VisibilityToBoolConverter x:Key="converter"/>
       </sdk:DataGrid.Resources>
       <sdk:DataGrid.Columns>
          <sdk:DataGridTemplateColumn>
             <sdk:DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                  <ToggleButton Content="Expand" 
                      IsChecked="{Binding Path=DetailsVisibility, 
                      Mode=TwoWay, 
                      RelativeSource={RelativeSource AncestorType=sdk:DataGridRow},
                      Converter={StaticResource converter}}"/>
                </DataTemplate>
              </sdk:DataGridTemplateColumn.CellTemplate>
           </sdk:DataGridTemplateColumn>
       </sdk:DataGrid.Columns>
    </sdk:DataGrid>
    

    但您需要一个VisibityBoolean 的转换器才能使其工作:

    public class VisibilityToBoolConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter,
            CultureInfo culture)
        {
            Visibility visibility = (Visibility)value;
            return (visibility == Visibility.Visible);
        }
    
        public object ConvertBack(object value, Type targetType, object parameter,
            CultureInfo culture)
        {
            bool visibility = (bool)value;
            return visibility ? Visibility.Visible : Visibility.Collapsed;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-07-11
      • 2016-11-02
      • 2016-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-24
      • 1970-01-01
      • 2019-08-20
      相关资源
      最近更新 更多