2012-04-05 6 views
0

세로 단추가있는 랩 랩 패널을 사용해 봅니다. 모든 버튼은 이미지와 텍스트 블록으로 구성됩니다. 사용자가 GridSplitter를 이동할 때창의 왼쪽에있는 Outlook에서 Microsoft가 수행 한 작업을 수행하려고합니다. 사용자가 랩 패널의 높이를 줄이면 버튼에 배치 할 위치가 없으면 텍스트 블록이 사라집니다 (버튼은 이미지에서 구성됩니다).WPF의 가로 세로 WrapPanel

어떻게 할 수 있습니까?

감사

답변

1

정확하게 이해하면. 텍스트와 이미지가있는 단추를 표시하려고하지만 단추의 너비가 특정 크기로 줄어들면 이미지 만 표시됩니다.

그렇다면 데이터 트리거를 사용하여 구현할 수 있어야합니다.

[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(); 
    } 

} 

나는이에 전문가가 아니다, 그래서 청소기 방법이있을 수 있습니다

<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> 

또한이 IValueConvertor를 사용하여. 또한 요청한 wrappanel 대신 listview를 사용했습니다.

희망이 있습니다.

+0

브렌트에게 감사합니다! 그것은 매우 불행했습니다. –

+0

문제 없습니다. 행운을 빕니다. –

0

당신이 사용하고자하는 것은 Expander 컨트롤입니다처럼 소리. 이 StackOverflow post은 다른 사람을 열면 다른 사람이 자동으로 닫히게하는 방법을 설명합니다. 이것은 Outlook에서 설명하는 것과 같이 작동합니다.

+0

감사합니다 Chris! 저는 확장기 (창 측면을 최소화하는 버튼)에 관해서 이야기하지 않습니다. GridSplitter에 대해 이야기하면서 위 또는 아래로 가져 가면 단추 텍스트가 사라집니다. 어떻게하는지 알고 계십니까? –

+0

XAML 및 코드를 게시하여 수행하려는 작업의 예가 될 수 있으며 더 도움이 될 것입니다. –