6

3つのTextBlockを使用して独自の単純なstatusbarcontrolを作成しました。ここで、最初のTextblockが使用可能なスペースをできるだけ多く使用するようにしたいと思います。私は終わっていないようです..今では、テキストを表示するために必要なスペースだけが必要です。

XAML:

  <StatusBar Background="{StaticResource GradientBrush}">
<StatusBar.ItemsPanel>
  <ItemsPanelTemplate>
    <Grid>
      <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
      </Grid.RowDefinitions>
      <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="Auto" />
      </Grid.ColumnDefinitions>
    </Grid>
  </ItemsPanelTemplate>
</StatusBar.ItemsPanel>
<StatusBarItem HorizontalAlignment="Left"
               HorizontalContentAlignment="Right">
  <Border BorderThickness="1"
          BorderBrush="Black"
          Padding="5 0 5 0"
          Background="White">
    <TextBlock Text="{Binding Message, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
             Foreground="{Binding TextColorMessage}"
             Background="White"
             />
  </Border>
</StatusBarItem>
<Separator Grid.Column="1" />
<StatusBarItem Grid.Column="2"
               HorizontalAlignment="Right">
  <TextBlock Text="{Binding Path=DatabaseName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</StatusBarItem>
<Separator Grid.Column="3" />
<StatusBarItem Grid.Column="4"
               HorizontalAlignment="Right">
  <TextBlock Text="{Binding Path=ComputerName}" />
</StatusBarItem>

マイステータスバー

4

4 に答える 4

12

これは非常に簡単です。Horizo​​ntalContentAlignmentの場合と同じように、「strech」である必要があるときにStatusBarItemHorizo​​ntalAlignment="Left"を設定しました。また、境界線にマージン=0を設定することをお勧めします。これは私がしたことなので、それは私のために働くでしょう:

<StatusBarItem HorizontalAlignment="Stretch"
               HorizontalContentAlignment="Stretch">
    <Border BorderThickness="1"
            BorderBrush="Black"
            Margin="0"
            Padding="5 0 5 0"
            Background="White">
        <TextBlock Text="{Binding Message, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                   Foreground="{Binding TextColorMessage}"
                   Background="White"/>
    </Border>
</StatusBarItem>

これが役立つ場合は、回答としてマークしてください

于 2012-12-14T13:32:30.677 に答える
6

StatusBarItemのとをに設定してみHorizontalAlignmentHorizontalContentAlignmentくださいStretch

于 2012-12-14T13:32:25.617 に答える
0

StatusBarItemのHorizo​​ntalContentAlignmentをStretchに設定し、TextBlockのTextAlignmentプロパティをRightに設定します。(この2番目の設定は、テキストを右に揃えようとしているように見えるため、最初のStatusBarItemにのみ必要です。)

于 2014-03-27T08:09:26.953 に答える
0

StatusBarには、有効なHorizo​​ntalAlignment = Rightアイテムが1つしかないため、必要な場所にある最後のアイテムのみを取得できます。statusBarのFlowDirection="RightToLeft"を設定し、逆の順序でアイテムを追加できます。詳細:右側に配置されたアイテムはStatusBarItemで囲む必要はありませんが、左側のアイテムはストレッチする必要があります。次のコード:

<StatusBar VerticalAlignment="Bottom" FlowDirection="RightToLeft"><!--flow right to left cause items right aligned-->
    <!--make item's flow back left to right, avoid display disorder-->
    <TextBlock x:Name="textBlock_status_R1" Text="111.147.168.20" Grid.Column="2" Margin="10,0" FlowDirection="LeftToRight"/>
    <Separator/>
    <TextBlock x:Name="textBlock_status_R2" Text="Working" Margin="10,0" FlowDirection="LeftToRight"/>
    <Separator/>
    <!--To fill rest space,need StatusBarItem packing and default HorizontalAlignment="Stretch"-->
    <StatusBarItem FlowDirection="LeftToRight">
        <TextBlock x:Name="textBlock_status_L1" Text="Information here."/>
    </StatusBarItem>
</StatusBar>
于 2017-08-20T10:23:06.410 に答える