2012-11-29 68 views
4

我使用了一個代表國家的ItemsControl。對於每一個國家我使用一個ListView用於示出其城市:ItemsControl中有ListViews的SharedSizeGroup等價物嗎?

<ItemsControl ItemsSource="{Binding Countries}"> 
    <ItemsControl.ItemsPanel> 
    <ItemsPanelTemplate> 
     <StackPanel Orientation="Vertical" /> 
    </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
    <ItemsControl.ItemTemplate> 
    <DataTemplate> 
     <ListView Margin="10" 
       ItemsSource="{Binding Cities}"> 
     <ListView.View> 
      <GridView> 
      <GridViewColumn Width="140" 
          Header="City" 
          DisplayMemberBinding="{Binding Name}" /> 
      <GridViewColumn Width="90" 
          Header="Population" 
          DisplayMemberBinding="{Binding Population}" /> 
      </GridView> 
     </ListView.View> 
     </ListView> 
    </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

其結果是:

enter image description here

我需要,每當用戶在第一列表視圖更改列寬度的第二個調整其寬度(類似SharedGroupSize網格)。

我該如何做到這一點?

回答

0

創建具有用於每個列的寬度的依賴特性的自定義用戶控件。然後雙向將列寬綁定到它們。

<UserControl x:Class="CountryList" x:Name="countryList"> 
    <ItemsControl ...... 
     <GridView> 
      <GridViewColumn Width="{Binding ColumnWidth1,Mode=TwoWay, ElementName=countryList}" 
         Header="City" 
         DisplayMemberBinding="{Binding Name}" /> 
      <GridViewColumn Width="{Binding ColumnWidth2,Mode=TwoWay, ElementName=countryList}" 
         Header="Population" 
         DisplayMemberBinding="{Binding Population}" /> 
     </GridView> 
    ....... 
</UserControl> 

背後

public partial class CountryList : UserControl 
{ 
    public static readonly DependencyProperty ColumnWidth1Property = 
     DependencyProperty.Register("ColumnWidth1", typeof(int), typeof(CountryList), 
     new PropertyMetadata(140)); 

    public int ColumnWidth1 
    { 
     get { return (int)GetValue(ColumnWidth1Property); } 
     set { SetValue(ColumnWidth1Property, value); } 
    } 

    ....... 
} 
代碼
相關問題