2013-07-09 21 views
5

私はWPF WrapPanelを持っていて、それにはButtonsのいくつかが含まれています。実行時にそれらを並べ替えたいと思います。などのデザイン時にXAMLコード:実行時にWrapPanelでコントロールを並べ替える

<Grid x:Name="LayoutRoot"> 
    <WrapPanel Margin="133,127,216,189" Background="#FF979797"> 
     <Button Content="Button" Width="75"/> 
     <Button Content="Button" Width="75"/> 
     <Button Content="Button" Width="75"/> 
     <Button Content="Button" Width="75"/> 
     <Button Content="Button" Width="75"/> 
     <Button Content="Button" Width="75"/> 
    </WrapPanel> 
</Grid> 

しかし、私は、再実行時にButtonsを手配します。あなたは私を助けてくれますか?

答えて

0

実行時に子を並べ替える場合は、WrapPannelの子をXAMLではなくコードで作成(または少なくとも操作)するか、またはスタイルタグ内でsetting up Triggers(ボタンを操作する)の2つのオプションがあります必要に応じて。

Here's例。

3

あなたはこのような何かを行うことができます。

<ItemsControl ItemsSource="{Binding Items}"> 
     <ItemsControl.ItemsPanel> 
      <ItemsPanelTemplate> 
       <WrapPanel /> 
      </ItemsPanelTemplate> 
     </ItemsControl.ItemsPanel> 
     <ItemsControl.ItemTemplate> 
      <DataTemplate> 
       <Button Content="{Binding}" Width="75"/> 
      </DataTemplate> 
     </ItemsControl.ItemTemplate> 
    </ItemsControl> 

アイテムは、あなたのDataContextの上の財産となり、通常はある種ののObservableCollectionになります。最も単純なケースでは、ボタンのキャプションに対応するストリングの集合である可能性があります。 ObservableCollection要素を再配置すると、WrapPanelを使用してItemsControlの対応するボタンを並べ替えることになります。サイドノートでは


、このタイプのアプローチを使用すると、MVVMパターンとして知られているものに向けてのステップです(モデル - ビュー - ViewModelに。)これはすぐにWPFアプリケーションを開発するための業界標準パターンになりつつありさフレキシブルでダイナミックなUIを作成する際に多くの利点があります。重要なWPF開発をしたい場合は、このパターンを調べることを強くお勧めします。慣れるまでには少し時間がかかりますが、最終的にはかなり価値があります。

関連する問題