私は垂直ボタンでラップパネルを構築しようとしています。 すべてのボタンは、画像とテキストブロックから構成されています。 私は、ユーザーがGridSplitterを移動するときに、ウィンドウの左側のOutlookで を行ったことをしたいと思います。 ラップパネルの高さを低くすると、 ボタンが配置されない場合、テキストブロックが消えます(ボタンはイメージからのみ構成されます)。WPFでの水平方向から垂直方向のWrapPanel
どうすればいいですか?
感謝
私は垂直ボタンでラップパネルを構築しようとしています。 すべてのボタンは、画像とテキストブロックから構成されています。 私は、ユーザーがGridSplitterを移動するときに、ウィンドウの左側のOutlookで を行ったことをしたいと思います。 ラップパネルの高さを低くすると、 ボタンが配置されない場合、テキストブロックが消えます(ボタンはイメージからのみ構成されます)。WPFでの水平方向から垂直方向のWrapPanel
どうすればいいですか?
感謝
私は正しく理解しています。テキストとイメージでボタンを表示したいのですが、ボタンの幅が一定のサイズに縮小されている場合は、イメージのみが表示されます。
もしそうなら、あなたは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>
。私はまた、あなたの要求されたラッパーパネルの代わりにリストビューを使用しました。
希望します。
何を使用することはExpander
制御であるようですね。このStackOverflow postは、別のものを開くと自動的にもう1つを閉じる方法を説明しています。これはOutlookで説明しているように機能します。
おかげさまでChris! 私はエキスパンダー(ウィンドウの側面を最小化するボタン)については話しません。 GridSplitterについて説明します。グリッドスプリッタを使用すると、ボタンのテキストが消えてしまいます。 これを行う方法は分かりますか? –
あなたがやろうとしていることの例としてXAMLとコードを投稿することができます。 –
ブレントありがとう!それは非常にハーフフルでした。 –
問題ありません。がんばろう。 –