2012-12-14 25 views
5

मैंने 3 टेक्स्टब्लॉक के साथ अपना स्वयं का सरल स्टेटसबार बनाया। अब मैं चाहता हूं कि पहला टेक्स्टब्लॉक जितना अधिक हो उतना स्थान ले ले। ऐसा लगता है कि ऐसा नहीं लगता है .. अब यह केवल टेक्स्ट प्रदर्शित करने के लिए आवश्यक स्थान लेता है।WPF स्टेटसबार, जितना संभव हो उतना स्थान लेने के लिए टेक्स्टब्लॉक को बढ़ाएं

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> 

My StatusBar

उत्तर

7

वैसे यह बहुत सीधी आगे है: आपने स्टेटसबैरिम क्षैतिज एलाइनमेंट = "बाएं" सेट किया था जब यह "स्ट्रेच" होना चाहिए, क्षैतिजकंटेंटलाइन के लिए समान होना चाहिए। सीमा पर मार्जिन = 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> 

अगर यह उपयोगी है जवाब

+2

"यदि यह सहायक है तो कृपया उत्तर के रूप में चिह्नित करें", इसे बताने की कोई आवश्यकता नहीं है। ओपी पहले से ही जानता है। – Clemens

+0

THx, फिर से इतना आसान :) मैंने कोड उदाहरण के कारण इसे उत्तर के रूप में चिह्नित किया है। Florian का समाधान भी अच्छा है। – PitAttack76

4

सेट करने का प्रयास StatusBarItem के HorizontalAlignment और Stretch करने के लिए HorizontalContentAlignment

0

StatusBarItem के HorizontalContentAlignment फैलाने के लिए सेट और सही करने के लिए TextBlock के TextAlignment संपत्ति के रूप में चिह्नित करें। (यह दूसरी सेटिंग केवल पहली स्थिति बैरिटम के लिए जरूरी है क्योंकि ऐसा लगता है कि आप टेक्स्ट को दाईं ओर संरेखित करने का प्रयास करते हैं।)

0

स्टेटसबार में केवल एक क्षैतिज असाइनमेंट = सही आइटम प्रभाव है, इसलिए आप केवल अंतिम प्राप्त कर सकते हैं वांछित जगह में आइटम। आप स्टेटसबार के फ़्लोडायरेक्शन = "राइट टॉफ़्ट" सेट कर सकते हैं और आइटम को उलट क्रम में जोड़ सकते हैं। विवरण: सही जगहों को स्थिति की आवश्यकता नहीं है स्थिति बार्टइटम घिरा हुआ है, लेकिन बाएं को छीनने की जरूरत है। निम्नलिखित कोड:

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

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^