דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. ארכיון code613m
  4. WPF עיצוב הדטה-גריד

WPF עיצוב הדטה-גריד

מתוזמן נעוץ נעול הועבר ארכיון code613m
11 פוסטים 2 כותבים 569 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • רחמיםר מנותק
    רחמיםר מנותק
    רחמים מורחק
    כתב ב נערך לאחרונה על ידי
    #1

    בדטה-גריד כל שורה מתפרסת על כל רוחב הפקד אף שהעמודות לא רחבות, איך אני יכול לעצב את הדטה-גריד כך ששורה לא תתפרס על כל רוחב הפקד אלא רק עד סוף העמודה האחרונה ובדומה לפקד הדטה-גריד שב WIN FORMS ?

    פורסם במקור בפורום CODE613 ב25/12/2013 12:57 (+02:00)

    תגובה 1 תגובה אחרונה
    0
    • רחמיםר מנותק
      רחמיםר מנותק
      רחמים מורחק
      כתב ב נערך לאחרונה על ידי
      #2

      אולי בכל זאת יש רעיונות :?:

      פורסם במקור בפורום CODE613 ב06/01/2014 14:35 (+02:00)

      תגובה 1 תגובה אחרונה
      0
      • dovidD מנותק
        dovidD מנותק
        dovid ניהול
        כתב ב נערך לאחרונה על ידי
        #3

        אם אתה לא רוצה שורות אחרי העמודה האחרונה תוכל בצורה פשוטה או להרחיב את אחת העמודות לכל יכולתה ע"י Width="*" או ליישר את כל הפקד לימין.
        אבל אם אתה רוצה את המראה המדוייק של DataGridView ראיתי ע"ז פוסט כאן
        http://stackoverflow.com/questions/14089705/can-the-wpf-datagrid-control-be-made-to-behave-like-the-winforms-datagridcontrol

        פורסם במקור בפורום CODE613 ב06/01/2014 17:59 (+02:00)

        מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

        בכל נושא אפשר ליצור קשר dovid@tchumim.com

        תגובה 1 תגובה אחרונה
        1
        • רחמיםר מנותק
          רחמיםר מנותק
          רחמים מורחק
          כתב ב נערך לאחרונה על ידי
          #4

          נפלא ממש !
          תודה רבה!
          הקוד שהשתמשתי בו מהקישור שהבאת הוא:

          <Window.Resources>
                  <Style TargetType="DataGridRow">
                      <Setter Property="HorizontalAlignment" Value="Left" />
                  </Style>
                  <Style TargetType="DataGridColumnHeadersPresenter">
                      <Setter Property="Template">
                          <Setter.Value>
                              <ControlTemplate TargetType="{x:Type DataGridColumnHeadersPresenter}">
                                  <Grid>
                                      <ItemsPresenter />
                                  </Grid>
                              </ControlTemplate>
                          </Setter.Value>
                      </Setter>
                  </Style>
              </Window.Resources>
          

          אפשר גם להוסיף משהו לסטולים האלו כדי שיופיע צל מתחת לעמודות וזה יראה כמו גליון אקסל אחרי שמסתירים עמודות ושורות ?

          פורסם במקור בפורום CODE613 ב06/01/2014 18:07 (+02:00)

          תגובה 1 תגובה אחרונה
          0
          • רחמיםר מנותק
            רחמיםר מנותק
            רחמים מורחק
            כתב ב נערך לאחרונה על ידי
            #5

            הוספתי כך כדי לעשות צל:

            <Window.Resources>
            
                    <DropShadowEffect x:Key="ShadowEffect" BlurRadius="15" Color="#FFB6B7BE" />
                 
                    <Style TargetType="DataGridRow">
                        <Setter Property="HorizontalAlignment" Value="Left" />
                        <Setter Property="Effect" Value="{StaticResource ResourceKey=ShadowEffect}" />
                    </Style>
                    <Style TargetType="DataGridColumnHeadersPresenter">
                        <Setter Property="Template">
                            <Setter.Value>
                                <ControlTemplate TargetType="{x:Type DataGridColumnHeadersPresenter}">
                                    <Grid>
                                        <ItemsPresenter Effect="{StaticResource ResourceKey=ShadowEffect}"/>
                                    </Grid>
                                </ControlTemplate>
                            </Setter.Value>
                        </Setter>
                    </Style>
                </Window.Resources>
            

            אבל זה נתן צל וגם טישטש את הכתב בתוך התאים של הדטה גריד.

            פורסם במקור בפורום CODE613 ב06/01/2014 18:40 (+02:00)

            תגובה 1 תגובה אחרונה
            1
            • dovidD מנותק
              dovidD מנותק
              dovid ניהול
              כתב ב נערך לאחרונה על ידי
              #6

              לא הבנתי מה אתה רוצה, ולא מכיר את הצל ההוא מאקסל. תוכל לצרף תמונה להמחיש מה אתה מעוניין?

              פורסם במקור בפורום CODE613 ב06/01/2014 19:05 (+02:00)

              מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

              בכל נושא אפשר ליצור קשר dovid@tchumim.com

              תגובה 1 תגובה אחרונה
              0
              • רחמיםר מנותק
                רחמיםר מנותק
                רחמים מורחק
                כתב ב נערך לאחרונה על ידי
                #7

                באקסל זה נראה כך:

                אקסל.PNG

                פורסם במקור בפורום CODE613 ב06/01/2014 19:13 (+02:00)

                תגובה 1 תגובה אחרונה
                0
                • dovidD מנותק
                  dovidD מנותק
                  dovid ניהול
                  כתב ב נערך לאחרונה על ידי
                  #8

                  עשית מצויין בקוד שלך (רק שראשית עשית פעמיים את האפקט (מספיק אחד ועדיף הההוא של הItemsPresenter), ושנית, כל מקטע הסטייל של DataGridColumnHeadersPresenter מיותר).
                  הסיבה שהטקסט [u:1yl07xq2]נראה[/u:1yl07xq2] מטושטש יותר, זה בגלל שבתור איבר תצוגה מקונן של אלמנט עם אפקט הוא מרונדר כתמונה.
                  כדי לגרום לזה להיות בסדר, מוכרחים לתת את העיצוב במקום הנכון אבל לא להורה.
                  ולכן הייתי עושה אחרת מאשר הקוד הזה, ומטמפלט את כל הדטהגריד ולא את הDataGridRow.
                  אם יש לך כבר טמפלט מותאם אישית לדטה גריד, החלף את השורה הזאת:

                  <ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"   />
                  

                  בשורות אלו:

                  <Grid HorizontalAlignment="Left" VerticalAlignment="Top">
                      <Border Background="#FFBD4848">
                          <Border.Effect>
                              <DropShadowEffect BlurRadius="15" Color="#FFB6B7BE" />
                          </Border.Effect>
                      </Border>
                      <ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"   />
                  </Grid>
                  

                  זה מספיק בשביל שני העניינים (המרחב והצל).

                  פורסם במקור בפורום CODE613 ב06/01/2014 20:24 (+02:00)

                  מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                  בכל נושא אפשר ליצור קשר dovid@tchumim.com

                  תגובה 1 תגובה אחרונה
                  0
                  • רחמיםר מנותק
                    רחמיםר מנותק
                    רחמים מורחק
                    כתב ב נערך לאחרונה על ידי
                    #9

                    משהו פה לא מסתדר לי מה צריך בדיוק לתקן תוכל בבקשה לשים את הקוד המלא מ <Window.Resources> עד </Window.Resources>

                    פורסם במקור בפורום CODE613 ב06/01/2014 20:40 (+02:00)

                    תגובה 1 תגובה אחרונה
                    0
                    • dovidD מנותק
                      dovidD מנותק
                      dovid ניהול
                      כתב ב נערך לאחרונה על ידי
                      #10

                      @רחמים

                      משהו פה לא מסתדר לי מה צריך בדיוק לתקן תוכל בבקשה לשים את הקוד המלא מ <Window.Resources> עד </Window.Resources>

                      אני מעדיף שלא, כפי שששמת לב.
                      אני מבין שניסית להחליף בקוד שהבאת, בעוד שאני שאלתי ברורות: "יש לך טמפלט לדטה גריד כבר"? נסה לקרוא ביתר תשומת לב פעם הבאה.

                      הנה הקוד המלא:

                      <ControlTemplate  x:Key="dgTemplate" TargetType="{x:Type DataGrid}">
                          <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="True">
                              <ScrollViewer x:Name="DG_ScrollViewer" Focusable="false">
                                  <ScrollViewer.Template>
                                      <ControlTemplate TargetType="{x:Type ScrollViewer}">
                                          <Grid>
                                              <Grid.ColumnDefinitions>
                                                  <ColumnDefinition Width="Auto"/>
                                                  <ColumnDefinition Width="*"/>
                                                  <ColumnDefinition Width="Auto"/>
                                              </Grid.ColumnDefinitions>
                                              <Grid.RowDefinitions>
                                                  <RowDefinition Height="Auto"/>
                                                  <RowDefinition Height="*"/>
                                                  <RowDefinition Height="Auto"/>
                                              </Grid.RowDefinitions>
                                              <Button Command="{x:Static DataGrid.SelectAllCommand}" Focusable="false" Style="{DynamicResource {ComponentResourceKey ResourceId=DataGridSelectAllButtonStyle, TypeInTargetAssembly={x:Type DataGrid}}}" Visibility="{Binding HeadersVisibility, ConverterParameter={x:Static DataGridHeadersVisibility.All}, Converter={x:Static DataGrid.HeadersVisibilityConverter}, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" Width="{Binding CellsPanelHorizontalOffset, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"/>
                                              <DataGridColumnHeadersPresenter x:Name="PART_ColumnHeadersPresenter" Grid.Column="1" Visibility="{Binding HeadersVisibility, ConverterParameter={x:Static DataGridHeadersVisibility.Column}, Converter={x:Static DataGrid.HeadersVisibilityConverter}, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"/>
                                              <ScrollContentPresenter x:Name="PART_ScrollContentPresenter" CanContentScroll="{TemplateBinding CanContentScroll}" Grid.ColumnSpan="2" Grid.Row="1"/>
                                              <ScrollBar x:Name="PART_VerticalScrollBar" Grid.Column="2" Maximum="{TemplateBinding ScrollableHeight}" Orientation="Vertical" Grid.Row="1" Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}" Value="{Binding VerticalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}" ViewportSize="{TemplateBinding ViewportHeight}"/>
                                              <Grid Grid.Column="1" Grid.Row="2">
                                                  <Grid.ColumnDefinitions>
                                                      <ColumnDefinition Width="{Binding NonFrozenColumnsViewportHorizontalOffset, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"/>
                                                      <ColumnDefinition Width="*"/>
                                                  </Grid.ColumnDefinitions>
                                                  <ScrollBar x:Name="PART_HorizontalScrollBar" Grid.Column="1" Maximum="{TemplateBinding ScrollableWidth}" Orientation="Horizontal" Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}" Value="{Binding HorizontalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}" ViewportSize="{TemplateBinding ViewportWidth}"/>
                                              </Grid>
                                          </Grid>
                                      </ControlTemplate>
                                  </ScrollViewer.Template>
                                  <Grid HorizontalAlignment="Left" VerticalAlignment="Top">
                                      <Border Background="#FFBD4848">
                                          <Border.Effect>
                                              <DropShadowEffect BlurRadius="15" Color="#FFB6B7BE" />
                                          </Border.Effect>
                                      </Border>
                                      <ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"   />
                                  </Grid>
                              </ScrollViewer>
                          </Border>
                      </ControlTemplate>
                      

                      פורסם במקור בפורום CODE613 ב06/01/2014 21:00 (+02:00)

                      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                      בכל נושא אפשר ליצור קשר dovid@tchumim.com

                      תגובה 1 תגובה אחרונה
                      1
                      • רחמיםר מנותק
                        רחמיםר מנותק
                        רחמים מורחק
                        כתב ב נערך לאחרונה על ידי
                        #11

                        תשמע דוד, זה ממש מדהים הקודים שאתה מביא,
                        תודה רבה! :smile:

                        פורסם במקור בפורום CODE613 ב06/01/2014 22:36 (+02:00)

                        תגובה 1 תגובה אחרונה
                        1

                        בא תתחבר לדף היומי!
                        • התחברות

                        • אין לך חשבון עדיין? הרשמה

                        • התחברו או הירשמו כדי לחפש.
                        • פוסט ראשון
                          פוסט אחרון
                        0
                        • דף הבית
                        • קטגוריות
                        • פוסטים אחרונים
                        • משתמשים
                        • חיפוש
                        • חוקי הפורום