2010-12-20 11 views
4

私はいくつかの長方形でWPFチャートの背面をスタイルしようとしています。私はMVVMを使用しています。私は、一様なサイズにするために長方形が必要です。 XAMLを介して定義すると、これは4の固定「BucketCount」と連携して動作します。MVVMとUniformGridを使ったデータバインディング

<VisualBrush> 
    <VisualBrush.Visual> 
    <UniformGrid Height="500" Width="500" Rows="1" Columns="{Binding BucketCount}"> 
    <Rectangle Grid.Row="0" Grid.Column="0" Fill="#22ADD8E6" /> 
    <Rectangle Grid.Row="0" Grid.Column="1" Fill="#22D3D3D3"/> 
    <Rectangle Grid.Row="0" Grid.Column="2" Fill="#22ADD8E6"/> 
    <Rectangle Grid.Row="0" Grid.Column="3" Fill="#22D3D3D3"/> 
    </UniformGrid>   
</VisualBrush.Visual> 
<VisualBrush> 

どのように私は、長方形の私のObservableCollectionをバインドすることができますか? UniformGridには「ItemsSource」プロパティはありません。 ItemsControlを使用する必要がありますか?もしそうなら、どうしたらいいですか?

ありがとうございます。

答えて

6

ItemsControlを使用して、このようにバインドできます。 ItemsSourceは簡単な例だけObservableCollection<Brush>

<VisualBrush> 
    <VisualBrush.Visual> 
     <ItemsControl x:Name="itemsControl" ItemsSource="{Binding MyBrushes}"> 
      <ItemsControl.ItemsPanel> 
       <ItemsPanelTemplate> 
        <UniformGrid Height="500" Width="500" Rows="1"/> 
       </ItemsPanelTemplate> 
      </ItemsControl.ItemsPanel> 
      <ItemsControl.ItemTemplate> 
       <DataTemplate> 
        <Rectangle Fill="{Binding}"/> 
       </DataTemplate> 
      </ItemsControl.ItemTemplate> 
     </ItemsControl> 
    </VisualBrush.Visual> 
</VisualBrush> 

更新
それは私の使用シナリオのために動作しますが、私はここで何かが欠けている可能性があります。ここで私が試した完全なコードです。私は両方の

MainWindow.xaml動作するようには思えない

<Grid> 
    <Grid.Background> 
     <VisualBrush> 
      <VisualBrush.Visual> 
       <ItemsControl x:Name="itemsControl" ItemsSource="{Binding MyBrushes}"> 
        <ItemsControl.ItemsPanel> 
         <ItemsPanelTemplate> 
          <UniformGrid Height="500" Width="500" Rows="1"/> 
         </ItemsPanelTemplate> 
        </ItemsControl.ItemsPanel> 
        <ItemsControl.ItemTemplate> 
         <DataTemplate> 
          <Rectangle Fill="{Binding}"/> 
         </DataTemplate> 
        </ItemsControl.ItemTemplate> 
       </ItemsControl> 
       <!--<UniformGrid Height="500" Width="500" Rows="1" Columns="4"> 
        <Rectangle Grid.Row="0" Grid.Column="0" Fill="#22ADD8E6" /> 
        <Rectangle Grid.Row="0" Grid.Column="1" Fill="#22D3D3D3"/> 
        <Rectangle Grid.Row="0" Grid.Column="2" Fill="#22ADD8E6"/> 
        <Rectangle Grid.Row="0" Grid.Column="3" Fill="#22D3D3D3"/> 
       </UniformGrid>--> 
      </VisualBrush.Visual> 
     </VisualBrush> 
    </Grid.Background> 
</Grid> 

MainWindow.xaml.cs

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
     BrushConverter brushConverter = new BrushConverter(); 
     MyBrushes = new ObservableCollection<Brush>(); 
     MyBrushes.Add(brushConverter.ConvertFrom("#22ADD8E6") as Brush); 
     MyBrushes.Add(brushConverter.ConvertFrom("#22D3D3D3") as Brush); 
     MyBrushes.Add(brushConverter.ConvertFrom("#22ADD8E6") as Brush); 
     MyBrushes.Add(brushConverter.ConvertFrom("#22D3D3D3") as Brush); 
     this.DataContext = this; 
    } 

    public ObservableCollection<Brush> MyBrushes 
    { 
     get; 
     set; 
    } 
} 
+0

から同じ結果を得る...私は何だろI失われる可能性がありますか? –

+0

@JP:結果はまったく得られなかったのですか? –

+0

結果はありません。何も表示されません。バインディング名を確認したので、それは問題ではありません。 –

関連する問題