2012-04-02 4 views
2

私は、ListBox.ItemTemplateを介して別のコントロールを使用しているコントロールを1つ持っているシナリオを持っています。私はこれらの2つのコントロール間で高さと幅を共有する必要があります。どうすればそれを達成できますか?2つのwpfコントロールの間にSharedSizeScopeを親子関係で使用する方法は?

メインConrol XAMLは以下のように次のようになります。

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto" /> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="Auto" /> 
     <ColumnDefinition /> 
    </Grid.ColumnDefinitions> 

    <Grid > 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto" /> 
      <RowDefinition /> 
     </Grid.RowDefinitions> 
     <TextBlock Grid.Row="0" 
        Text="{Binding Path=Caption, 
            Mode=OneWay}" /> 
     <TextBlock Grid.Row="1" 
        Text="{Binding Path=Caption2, 
            Mode=OneWay}" /> 
    </Grid> 

    <ListBox Grid.Row="0" 
      Grid.Column="1" 
      ItemsSource="{Binding Path=ViewModels}"> 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <Views:View2 /> 
      </DataTemplate> 

    </ListBox.ItemTemplate> 
    <ListBox.ItemsPanel> 
    <ItemsPanelTemplate> 
     <StackPanel Orientation="Horizontal"></StackPanel> 
    </ItemsPanelTemplate> 
    </ListBox.ItemsPanel> 
</ListBox> 

VIEW2のXAMLは、以下の通りのようになります。

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto" /> 
     <RowDefinition Height="Auto" /> 
     <RowDefinition /> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition /> 
    </Grid.ColumnDefinitions> 

    <TextBlock Grid.Row="0" 
       Grid.Column="0" 
       Text="{Binding Path=Value, 
           Mode=OneWay}"/> 


    <TextBlock Text="{Binding Path=Value2, 
           Mode=OneWay}" 
           Grid.Row="1" 
           Grid.Column="0" 
           /> 
</Grid> 

答えて

2

あなたはColumnDefinition上の行の高さと列の幅Grid.IsSharedSizeScopeを使用してSharedSizeGroup属性を同期させることができますし、 RowDefinition

私はあなたがあなたのXAMLで同期する必要がある要素わからないんだけど、次のように例は次のようになります。

IaのあなたはGrid.IsSharedSizeScope

<Grid IsSharedSizeScope="true"> 
    .. 
</Grid> 
=「true」を使用して、親要素

これは、そのスコープ内で同じSharedSizeGroupを持つ列(または行)を同期します(複数のネストされたスコープを持つことができます)。

あなたview.xamlこの

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto" /> 
     <RowDefinition Height="Auto" /> 
     <RowDefinition /> 
    </Grid.RowDefinitions> 

    <Grid.ColumnDefinitions> 
     <ColumnDefinition SharedSizeGroup="column1"/> 
    </Grid.ColumnDefinitions> 

    <TextBlock Grid.Row="0" Grid.Column="0" Text="{Binding Path=Value, Mode=OneWay}"/> 
    <TextBlock Text="{Binding Path=Value2, Mode=OneWay}" Grid.Row="1" Grid.Column="0"/> 
</Grid> 

のように見えるのであればその後のすべてのテキストブロックは、同じ幅を持つことになります。

関連する問題