2013-04-04 36 views
0

我希望我的GridView中包含的用户组名称在左边,一个符号,右边的头,这样做,.:W8/XAML GridView控件 - >对齐Header元素向右

    <GroupStyle.HeaderTemplate> 
         <DataTemplate> 
          <Grid> 

           <Grid.ColumnDefinitions> 
            <ColumnDefinition 
             Width="*"></ColumnDefinition> 
            <ColumnDefinition 
             Width="*"></ColumnDefinition> 
           </Grid.ColumnDefinitions> 

           <Button 
            Grid.Column="0" 
            AutomationProperties.Name="Group Title" 
            Style="{StaticResource TextPrimaryButtonStyle}" /> 


            <Button 
             Grid.Column="1" 
             Content="&#xE0A1;"></Button> 
          </Grid> 
         </DataTemplate> 
        </GroupStyle.HeaderTemplate> 

Unfortunally的符号总是在左边旁边的组标题:

enter image description here

我怎么能右对齐一组头元素?

编辑:固定大小的网格列不工作,因为组的宽度可能会有所不同,具体取决于屏幕和单个组中的项目数。

回答

0

我在msdn论坛上找到了一个非常不错的解决方案。那就是:

首先写一个转换器来计算的DataTemplate集装箱的宽度,在我的情况下,格:

class WidthConverter : IValueConverter 
{ 
    #region IValueConverter Member 

    public object Convert(object value, Type targetType, object parameter, string language) 
    { 
     int x; 
     if (parameter != null) 
      x = int.Parse(parameter.ToString()); 
     else 
      x = 1; 
     if ((int)value % x == 0) 
      return (int)value/x * 260 - 5; 
     else 
      return ((int)value/x + 1) * 260 - 5; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, string language) 
    { 
     throw new NotImplementedException(); 
    } 

    #endregion 
} 

现在在一页的资源声明它:

<local:WidthConverter x:Key="WidthConverter"/> 

最后使用的绑定到把它的使用和计算Grid's宽度:

<Grid Width="{Binding Items.Count, Converter={StaticResource WidthConverter}, ConverterParameter=2}"> 

将转换器参数设置为显示的行数,如果不限制,则取决于屏幕分辨率。

将Converter中的260替换为符合项目模板大小和边距的数字。

0

可能有很多方法来做到这一点。最简单的方法是在数据模板网格中设置列宽。在上述代码中,改变width="*"为以下:

<Grid.ColumnDefinitions> 
    <ColumnDefinition Width="200"></ColumnDefinition> 
    <ColumnDefinition Width="50"></ColumnDefinition> 
</Grid.ColumnDefinitions> 

宽度的合计为等于250,这是标准的网格单元尺寸。

您可能需要根据实际需要调整这些数字。

+0

不幸的是,这个解决方案并不适合我,因为组的宽度取决于屏幕分辨率和个人组中的项目数量。 – Ostkontentitan 2013-04-05 08:39:44