1

WPFにカスタムUserControlがあります。これは、タイトルバーの機能を置き換えるためにスタックパネルが上部にドッキングされています。

スタックパネルの左側にはラベルがあり、ラベルに長い文字列が含まれる場合にテキストを折り返すためのテキストブロックが含まれています。

コントロールをドラッグすると問題が発生します。当然、ウィンドウをドラッグするにつれて、ラベルのテキストがどんどん表示されるようにしたいと思います。

ウィンドウが大きくなるにつれてラベルを大きくしたいのですが、どうすればいいのかわかりません。

これは、スクリーンショットのタイトルバーを実現するために私が書いたコードです。

<Grid>
        <DockPanel>
            <StackPanel Name="titleBar" DockPanel.Dock="Top" Height="28" FlowDirection="RightToLeft" Orientation="Horizontal" Background="AliceBlue">
                <Button x:Name="btnClose" Margin="0,0,5,0" Click="btnClose_Click">                  
                </Button>
                <Button x:Name="btnRunQuery" ToolTip="Run Query">                   
                </Button>
                <Button x:Name="btnFilter" ToolTip="Toggle Filter" Click="btnFilter_Click">                    
                </Button>
                <Button x:Name="btnAttributes">      
                </Button>
                <Button x:Name="btnAll" Click="btnAll_Click">ALL</Button>
                <Label Name="lblTableName" FontSize="14" MaxWidth="150">
                    <TextBlock Name="tbTableName" TextTrimming="WordEllipsis" TextWrapping="NoWrap" FlowDirection="LeftToRight"/>
                </Label>
            </StackPanel>
        </DockPanel>
    </Grid>

編集:ユーザーコントロールがレンダリングされるときに、ラベルの幅が150を超えないようにすることも追加したいと思います。したがって、MaxWidth="150"プロパティ。ただし、ウィンドウを拡大するにつれてラベルを大きくしていきたいと思います。

4

2 に答える 2

2

StackPanel の代わりに Grid を使用します。ラベルを含む最後の列には、Width="Auto" が必要です。ウィンドウが広すぎる場合にラベルとボタンの間の空の領域を埋めるために、その前に別の列を追加できます (ラベル列の右側を意味します)。

于 2012-10-28T16:31:04.610 に答える
0

ラベルを端に固定する必要があります。ラベルをクリックすると、4 つの側面にアンカー記号が表示されます。固定されると、4 つのシンボルは黒になります。

于 2012-10-28T16:24:51.607 に答える