2011-06-15 3 views
1

ビットマップの下に少数の文字列を表示する必要があります。表示できる文字列の最大数は5ですが、必ずしも5つの文字列のすべてが表示されるわけではありません。また、弦の長さも変わります。どのような場合でも、これらの文字列を視覚的に魅力的な方法でビットマップの下に表示したいと考えています。同様に、1つの文字列の場合は、ビットマップの下に中央に配置したいと思います。 2つの文字列の場合は、文字列をうまく配置して、ビットマップの下に配置する必要があります。 私は表示する文字列、表示する文字列の数(最小1と最大5)と文字列の長さだけを実行時に知っています。WPF:ビットマップに関するGRIDコンテンツの整列

私は以下のXAMLコードを書いていますが、自分の条件すべてに対して文字列をうまく位置付けることができません。 Bitmap1は円、bitmap2は左矢印、bitmap3は右矢印です。

誰かが私を助けることができますか?

<Grid x:Name="Graphics" Grid.Column="1" Background="Black"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="0.319*"/> 
      <RowDefinition Height="0.56*"/> 
      <RowDefinition Height="0.321*"/> 
     </Grid.RowDefinitions> 
     <Image Height="72" Source="/DataBinding;component/Bitmap1.bmp" Stretch="Fill" Width="108" Grid.Row="1" /> 
     <Grid Grid.Row="1"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="0.408*"/> 
       <ColumnDefinition Width="0.15*"/> 
       <ColumnDefinition Width="0.408*"/> 
      </Grid.ColumnDefinitions> 
      <Image x:Name="Next" Height="48" Width="48" Grid.Column="2" Source="/DataBinding;component/Bitmap3.bmp" HorizontalAlignment="Left" /> 
      <Image x:Name="Prev" Width="48" Height="48" Grid.Column="0" Source="/DataBinding;component/Bitmap2.bmp" HorizontalAlignment="Right"/> 

      <Grid HorizontalAlignment="Center" ShowGridLines="True" Width="Auto" Grid.ColumnSpan="3" Margin="38,69,41,-40"> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="Auto" /> 
        <ColumnDefinition Width="Auto" /> 
        <ColumnDefinition Width="Auto" /> 
        <ColumnDefinition Width="Auto" /> 
        <ColumnDefinition Width="Auto" /> 
       </Grid.ColumnDefinitions> 
       <TextBlock Visibility="Visible" Text="String1" Padding="10" Grid.Column="0" FontSize="14.667" TextAlignment="Center" Foreground="White" /> 
       <TextBlock Visibility="Visible" Text="String2" Padding="10" Grid.Column="1" FontSize="14.667" TextAlignment="Center" Foreground="White" /> 
       <TextBlock Visibility="Visible" Text="String3" Padding="10" Grid.Column="2" FontSize="14.667" TextAlignment="Center" Foreground="White" /> 
       <TextBlock Visibility="Visible" Text="String4" Padding="10" Grid.Column="3" FontSize="14.667" TextAlignment="Center" Foreground="White" /> 
       <TextBlock Visibility="Visible" Text="String5" Padding="10" Grid.Column="4" FontSize="14.667" TextAlignment="Center" Foreground="White" /> 
      </Grid> 
     </Grid> 
    </Grid> 

答えて

0

やりたいことパネルに基づいてカスタムコントロールを作成することにより、カスタムパネルを作成することです。 ArrangeOverrideをオーバーライドしたときにパネルがキャンバスに似ているため、キャンバスを使用するかのように、ArrangeOverrideをオーバーライドしてから、必要な場所に正確に配置します。グリッドは

+0

まあ :-)カスタムパネルそのものです、私はカスタムパネルを作成しようとしませんでした。グリッド内でStackPanelを使用して問題を解決しました。変更されたXAMLを以下に示します。また、私は各単語(私の場合に必要です)の書式を制御できるように、TextBlock内部で実行を使用しました。 – Mohanr

+0

StackPanelはカスタムパネルの一種です。私はそれがあなたが望んでいると思われるものには十分ではないと思っていましたが、それは素晴らしいことでした。 –

0

  <StackPanel Name="stack1" Orientation="Horizontal" Width="Auto" Background="Red" > 
       <TextBlock FontSize="14.667" Width="Auto" TextAlignment="Center"> 
           <Run x:Name="String1" Text="String1" /> 
           <Run x:Name="String2" Text="String2" /> 
       <Run x:Name="String3" Text="String3" /> 
       <Run x:Name="String4" Text="String4" /> 
       <Run x:Name="String5" Text="String5" /> 

      </TextBlock> 
      </StackPanel> 
     </Grid> 
    </Grid> 
関連する問題