2012-04-05 36 views
0

私は垂直ボタンでラップパネルを構築しようとしています。 すべてのボタンは、画像とテキストブロックから構成されています。 私は、ユーザーがGridSplitterを移動するときに、ウィンドウの左側のOutlookで を行ったことをしたいと思います。 ラップパネルの高さを低くすると、 ボタンが配置されない場合、テキストブロックが消えます(ボタンはイメージからのみ構成されます)。WPFでの水平方向から垂直方向のWrapPanel

どうすればいいですか?

感謝

答えて

1

私は正しく理解しています。テキストとイメージでボタンを表示したいのですが、ボタンの幅が一定のサイズに縮小されている場合は、イメージのみが表示されます。

もしそうなら、あなたはdatatriggerで実装できるはずです。

[ValueConversion(typeof(double), typeof(string))] 
public class isLessThanConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
      if ((double)value < double.Parse((string)parameter)) 
      { 
       return true; 
      } 
      else 
      { 
       return false; 
      } 

    } 

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 

} 

を私はこれでは専門家ではないですので、きれいな方法があるかもしれません。また、このIValueConvertorを使用して

<Window x:Class="StackOverflow1.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="clr-namespace:StackOverflow1" 
    Title="MainWindow" Height="350" Width="525"> 
<Window.Resources> 
    <local:isLessThanConverter x:Key="MyisLessThanConverter"/> 
    <Style x:Key="myWidthTrigger" TargetType="TextBlock"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Path=ActualWidth, RelativeSource={RelativeSource AncestorType=Button}, Converter={StaticResource MyisLessThanConverter}, ConverterParameter=90}" Value="True"> 
        <Setter Property="Visibility" Value="Collapsed" /> 
       </DataTrigger> 
     </Style.Triggers> 
    </Style> 
</Window.Resources> 
<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*"></ColumnDefinition> 
     <ColumnDefinition Width="Auto"></ColumnDefinition> 
     <ColumnDefinition Width="*"></ColumnDefinition> 
    </Grid.ColumnDefinitions> 
    <ListView HorizontalContentAlignment="Stretch"> 
     <Button x:Name="myButton" Width="Auto"> 
      <StackPanel Orientation="Horizontal"> 
       <TextBlock x:Name="MyTextBlock" Style="{StaticResource myWidthTrigger}" Text="Test"></TextBlock> 
       <Image Source="image.png" Height="15"></Image> 
      </StackPanel> 
     </Button> 
    </ListView> 
    <GridSplitter Width="5" Grid.Column="1" ResizeDirection="Columns" ResizeBehavior="PreviousAndNext"></GridSplitter> 
</Grid> 

。私はまた、あなたの要求されたラッパーパネルの代わりにリストビューを使用しました。

希望します。

+0

ブレントありがとう!それは非常にハーフフルでした。 –

+0

問題ありません。がんばろう。 –

0

何を使用することはExpander制御であるようですね。このStackOverflow postは、別のものを開くと自動的にもう1つを閉じる方法を説明しています。これはOutlookで説明しているように機能します。

+0

おかげさまでChris! 私はエキスパンダー(ウィンドウの側面を最小化するボタン)については話しません。 GridSplitterについて説明します。グリッドスプリッタを使用すると、ボタンのテキストが消えてしまいます。 これを行う方法は分かりますか? –

+0

あなたがやろうとしていることの例としてXAMLとコードを投稿することができます。 –

関連する問題