سؤال

لدي بسيط xaml التحكم التالية الشبكة صف التعريف:

<Grid.RowDefinitions>
            <RowDefinition Height="15*" />
            <RowDefinition Height="60*" />
            <RowDefinition Height="20*" />
            <RowDefinition Height="20*" />
            <RowDefinition Height="15*" />
</Grid.RowDefinitions>

الصفوف 1-3 كل عقد كتلة النص الذي قد أو قد لا يكون النص في ذلك.في التعليمات البرمجية خلف أريد أن تقليل RowDefinition إذا كان هناك أي نص.أساسا لدي التالية في التعليمات البرمجية خلف:

if(textblock.Text != ""){
   grid.RowDefinitions[elementRow].Height = new GridLength(20, GridUnitType.Star);
}
else{
   grid.RowDefinitions[elementRow].Height = new GridLength(0, GridUnitType.Star);
}

أريد الصفوف 0 و 4 أن تبقى كما هي محددة في xaml.للأسف هذا لا يعمل على الرغم من أن هناك نص في كتلة النص على الصف 2 يتم عرض أي شيء.

أفعل شيئا خاطئا.

أي مساعدة هي موضع تقدير ،

جيمس

هل كانت مفيدة؟

المحلول

لا تستخدم تدوين نجوم، واستخدام السيارات لRowDefinitions الخاص بك. إذا كان TextBlock.Text فارغة، تعيين الرؤية من TextBlock إلى Visibility.Collapsed. سوف الصف الشبكة ثم تقلص تلقائيا إلى لا شيء.

نصائح أخرى

وهذه ليست إجابة على سؤالك، فقط بعض المعلومات.

وو* في الارتفاع (أو عرض للأعمدة) يعني أن صف (أو عمود) الإرتفاع = "*" (أو العرض = "*") سوف تأخذ ما تبقى من الفضاء. حتى إذا كان لديك شبكة مع 4 صفوف في الشبكة مع الارتفاع = "100"، إذا كنت تفعل هذا:

<Grid.RowDefinitions>
            <RowDefinition Height="10" />
            <RowDefinition Height="10" />
            <RowDefinition Height="10" />
            <RowDefinition Height="*" />
</Grid.RowDefinitions>

والصف الإرتفاع = "*" سوف يكون 70 DIUS (وحدات مستقلة الجهاز).

وإضافة رقم أمام النجمة (الطول = "2 *") لا تعمل إلا إذا كان هناك أكثر من واحد الصفوف باستخدام النجمة، عدد أمام النجمة يشير إلى مدى مساحة أكبر بكثير سوف الصف محددة تأخذ (2 * = مرتين قدر، 3 * ثلاثة أضعاف، هلم جرا ...). I. E:.

<Grid.RowDefinitions>
            <RowDefinition Height="10" />
            <RowDefinition Height="10" />
            <RowDefinition Height="2*" /> <!-- this row will be twice as tall as the one below -->
            <RowDefinition Height="*" />
</Grid.RowDefinitions>

وهنا 3rd التوالي سيكون على ارتفاع 54 DIUS (ضعفي الصف 4TH الذي يبلغ ارتفاعه 26 DIUS تقريبا)، وكلاهما مرتفعات تلخص 80، وهو ما تبقى من مساحة الشبكة (10 + 10 + 26 + 54 = 100، وارتفاع الشبكة).

وراجع للشغل، وأنا أتفق مع الإجابة تشارلي.

يمكنك وضع البنود الخاصة بك داخل UniformGrid مع الأعمدة="1" وجعل النص رؤية انهار عندما تحصل على emptry النص.

 <UniformGrid Columns="1">
    <TextBlock Text="AAAA" Visibility="Collapsed" Grid.Row="0"/>
    <TextBlock Text="BBBBB" Grid.Row="1"/>
    <TextBlock Text="CCCCC" Grid.Row="2"/>
    <TextBlock Text="DDDDD" Grid.Row="3"/>
    <TextBlock Text="EEEE" Grid.Row="4"/>
</UniformGrid>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top