2016-07-20 6 views
0
<GridView x:Name="MainGridView"> 
      <ItemsPanelTemplate> 
       <StackPanel Orientation="Vertical"/> 
      </ItemsPanelTemplate> 
     </GridView.ItemsPanel> 
     <GridView.ItemTemplate> 
      <DataTemplate x:DataType="viewModels:SomeViewModel"> 
       <Grid x:Name="I_NEED_THIS"> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="40*"/> 
         <ColumnDefinition Width="60*"/> 
         <ColumnDefinition Width="180*"/> 
         <ColumnDefinition Width="40*"/> 
         <ColumnDefinition Width="40*"/> 
        </Grid.ColumnDefinitions> 
        <TextBlock with some binding/> 
        <TextBlock with some binding/> 
        <TextBlock with some binding/> 
        <TextBlock with some binding/> 
        <TextBlock with some binding/> 
       </Grid> 
      </DataTemplate> 
     </GridView.ItemTemplate> 
    </GridView> 

実行時にグリッドパラメータを操作するには、実行時に各グリッド(x:Name = "I_NEED_THIS")にアクセスする必要があります。作成された各グリッド上でどのように実行できますか?プログラムで幅を操作するためにGridView内のグリッドにアクセス

答えて

1

効果的には、ビジュアルツリーを歩いて、変更する要素も見つけなければなりません。このブログの記事は、あなたが始める必要があります。

http://blog.jerrynixon.com/2012/09/how-to-access-named-control-inside-xaml.html

+0

を必要としない場合、私はVisualTreeHelper' 'に示唆しています。ようこそデータバインディングを使用します。 –

+0

グリッドパラメータを変更する必要がある場合は、データバインドを開始するのは難しいでしょう。アイテムテンプレートセレクタも使用できますが、これは予想される条件がある場合にのみ適用されます。純粋なコードでアクセスする必要がある場合、ビジュアルツリーは基本的に唯一の方法です。 –

+0

私はデータバインディングをどのように取り込むのが難しいか分かりません。このシナリオでは、純粋なコードの背後にある唯一の方法ではありません。 'ContainerFromItem'を使って' GridViewItem'を取得し、 'ContentTemplateRoot'を使って' Grid'を取得することができます。それは大したことではない友人、もちろん 'VisualTreeHelper'作品、私はこの仕事をするために他の方法を見つけることができると思いますか? –

関連する問題