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

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

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

window template WPF

מתוזמן נעוץ נעול הועבר ארכיון code613m
25 פוסטים 3 כותבים 1.1k צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • ש מנותק
    ש מנותק
    שמואל
    כתב ב נערך לאחרונה על ידי
    #3

    תודה

    פורסם במקור בפורום CODE613 ב09/03/2014 19:43 (+02:00)

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

      אבל במקרה זה הוא לא נותן להוסיף פקדים בחלון הנוכחי

      פורסם במקור בפורום CODE613 ב18/03/2014 14:08 (+02:00)

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

        @שמואל

        אבל במקרה זה הוא לא נותן להוסיף פקדים בחלון הנוכחי

        מה הכוונה מקרה זה?

        שים נגיד את הקוד דלהלן בApp.xaml:

        <Style TargetType="{x:Type Window}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type Window}">
                        <Border >
                            <Grid >
                                <Grid.RowDefinitions>
                                    <RowDefinition Height="50"/>
                                    <RowDefinition Height="*"/>
                                    <RowDefinition Height="50"/>
                                </Grid.RowDefinitions>
                                <Border>
                                    <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" >כותרת עליונה</TextBlock>
                                </Border>
                                <AdornerDecorator Grid.Row="1">
                                    <ContentPresenter/>
                                </AdornerDecorator>
                                <Border Grid.Row="2" >
                                    <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" >כותרת תחתונה</TextBlock>
                                </Border>
                            </Grid>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
        

        פורסם במקור בפורום CODE613 ב18/03/2014 14:23 (+02:00)

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

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

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

          באמת בזמן עיצוב זה נראה מצויין אבל כאשר אני מריץ את זה לא רואים כלל את הכותרת העליונה והתחתונה.

          פורסם במקור בפורום CODE613 ב18/03/2014 14:34 (+02:00)

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

            רחמים צודק
            לא רק זה,
            שים לב שהוא לא נותן לך להתייחס בחלון לשורות הגריד שכביכול נמצאות בטמפלט
            ולדוד זה מה שהתכוונתי שהוא לא נותן להוסיף פקדים לתוך הטמפלט

            פורסם במקור בפורום CODE613 ב18/03/2014 14:55 (+02:00)

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

              אני חושב שאפשר לעשות מחלקה כזו:

              Public Class windowFace
                  Inherits UserControl
                  Protected Overrides Sub OnInitialized(e As System.EventArgs)
                      MyBase.OnInitialized(e)
                      InitializeComponent()
                  End Sub
              
                  Private _mainGrid As Grid
                  Public Property mainGrid() As Grid
                      Get
                          Return _mainGrid
                      End Get
                      Set(value As Grid)
                          _mainGrid = value
                          grid1.Children.Add(_mainGrid)
                          Grid.SetRow(_mainGrid, 1)
                      End Set
                  End Property
              
                  Dim grid1 As System.Windows.Controls.Grid = New System.Windows.Controls.Grid()
                  Private Sub InitializeComponent()
                    
                      Dim rowDefinition2 As System.Windows.Controls.RowDefinition = New System.Windows.Controls.RowDefinition()
                      Dim rowDefinition3 As System.Windows.Controls.RowDefinition = New System.Windows.Controls.RowDefinition()
                      Dim rowDefinition4 As System.Windows.Controls.RowDefinition = New System.Windows.Controls.RowDefinition()
                      Dim label5 As System.Windows.Controls.Label = New System.Windows.Controls.Label()
                      Dim label6 As System.Windows.Controls.Label = New System.Windows.Controls.Label()
                   
                      Me.BeginInit()
                      Me.FlowDirection = System.Windows.FlowDirection.RightToLeft
                      grid1.BeginInit()
                      rowDefinition2.BeginInit()
                      rowDefinition2.Height = New System.Windows.GridLength(50.0R, System.Windows.GridUnitType.Pixel)
                      rowDefinition2.EndInit()
                      rowDefinition3.BeginInit()
                      rowDefinition3.Height = New System.Windows.GridLength(1.0R, System.Windows.GridUnitType.Star)
                      rowDefinition3.EndInit()
                      rowDefinition4.BeginInit()
                      rowDefinition4.Height = New System.Windows.GridLength(50.0R, System.Windows.GridUnitType.Pixel)
                      rowDefinition4.EndInit()
                      grid1.RowDefinitions.Add(rowDefinition2)
                      grid1.RowDefinitions.Add(rowDefinition3)
                      grid1.RowDefinitions.Add(rowDefinition4)
                      label5.BeginInit()
                      label5.Name = "Label1"
                      label5.Content = "כותרת עליונה"
                      label5.HorizontalAlignment = System.Windows.HorizontalAlignment.Center
                      label5.VerticalAlignment = System.Windows.VerticalAlignment.Center
                      label5.EndInit()
                      label6.BeginInit()
                      label6.Name = "Label2"
                      label6.Content = "כותרת תחתונה"
                      label6.HorizontalAlignment = System.Windows.HorizontalAlignment.Center
                      label6.VerticalAlignment = System.Windows.VerticalAlignment.Center
                      System.Windows.Controls.Grid.SetRow(label6, 2)
                      label6.EndInit()
                      grid1.Children.Add(label5)
                      grid1.Children.Add(label6)
                      grid1.EndInit()
                      Me.Content = grid1
                      Me.EndInit()
                  End Sub
              End Class
              

              ותשתמש בזה כפקד בכל חלון כך:

              <Window x:Class="Window3"
                  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                  Title="Window3" Height="300" Width="300" 
                      xmlns:my="clr-namespace:WindowTemplet">
                  <Grid>
                      <my:windowFace HorizontalAlignment="Stretch" 
                                     x:Name="WindowFace1" VerticalAlignment="Stretch" >
                          <my:windowFace.mainGrid>
                              <Grid >
                                  <Button Margin="38,40,55,38" Name="Button">Button</Button>
                              </Grid>
                          </my:windowFace.mainGrid>
                      </my:windowFace>
                  </Grid>
              </Window>
              

              בתוך ה mainGrid אתה יכול לשים כל מה שצריך להיות בחלון הזה.

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

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

                בקיצור אתה אומר לכתוב קוד לא בXAML
                בלית ברירה אולי זה הפיתרון
                פשוט קשה לי האמין שאין לזה דרך בxaml

                פורסם במקור בפורום CODE613 ב18/03/2014 15:14 (+02:00)

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

                  ושאלה נוספת,
                  נגיד שאתה רוצה שהעיצוב ישמר לאורך כל החלונות באפליקציה
                  אבל אתה רוצה לשנות את הכיתוב (למשל חלון אחד הכותרת תהיה 'הכנסות' ובחלון שני 'הוצאות' וכו' וכו')

                  פורסם במקור בפורום CODE613 ב18/03/2014 15:24 (+02:00)

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

                    אני לא יודע באמת למה במן ריצה זה לא עובד ככה, בכל אופן אם מפרשים לסטייל KEY ונותנים לו התייחסות של סטטיק ריסורס בכל חלון (במאפיין סטייל) אז זה עובד.
                    שמואל, אם אתה רוצה לשנות בכל חלון את הפקדים שבכותרת עליונה ותחתונה, אז למה טמפלט? תעתיק ותדביק מפעם אחת ממנה אתה מרוצה.
                    אם אתה רוצה שרק הטקסט וכדו' ישתנה אז תוכל לעשות בטמפלט בינדינג לאלמנטים אחרים של החלון כמו לטייטל ועוד.

                    פורסם במקור בפורום CODE613 ב18/03/2014 15:41 (+02:00)

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

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

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

                      @שמואל

                      בקיצור אתה אומר לכתוב קוד לא בXAML
                      בלית ברירה אולי זה הפיתרון
                      פשוט קשה לי האמין שאין לזה דרך בxaml

                      אפשר גם אם XAML בצורה הבאה:

                      מוסיפים לפרוייקט פקד חדש, זה ה XAML שלו:

                      <UserControl x:Class="UserControl2"
                                   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                                   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                                   xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
                                   xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
                                   mc:Ignorable="d" 
                                   d:DesignHeight="300" d:DesignWidth="300">
                          <Grid >
                              <Grid.RowDefinitions>
                                  <RowDefinition Height="50"/>
                                  <RowDefinition Height="*"/>
                                  <RowDefinition Height="50"/>
                              </Grid.RowDefinitions>
                              <Border>
                                  <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" >כותרת עליונה</TextBlock>
                              </Border>
                              <Grid Grid.Row="1" Name="Grid1">
                      
                              </Grid>
                              <Border Grid.Row="2" >
                                  <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" >כותרת תחתונה</TextBlock>
                              </Border>
                          </Grid>
                      </UserControl>
                      

                      וזה הקוד:

                      Public Class UserControl1
                          Inherits UserControl
                      
                          Dim UC As New UserControl2
                          Public Sub New()
                              Me.Content = UC
                          End Sub
                      
                          Private _mainGrid As Grid
                          Public Property mainGrid() As Grid
                              Get
                                  Return _mainGrid
                              End Get
                              Set(value As Grid)
                                  _mainGrid = value
                                  UC.Grid1.Children.Add(_mainGrid)
                                  Grid.SetRow(_mainGrid, 1)
                              End Set
                          End Property
                      
                      End Class
                      

                      ואז אפשר להוסיף את זה לכל חלון כך:

                      <Window x:Class="MainWindow"
                          xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                          xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                          Title="MainWindow" Height="350"
                              Width="525" xmlns:my="clr-namespace:test">
                          <my:UserControl1 x:Name="UserControl11" >
                              <my:UserControl1.mainGrid>
                                  <Grid Name="Grid">
                                      <Button Margin="39,40,61,51" Name="Button">לחצן</Button>
                                  </Grid>
                              </my:UserControl1.mainGrid>
                          </my:UserControl1>
                      </Window>
                      

                      כמו מקודם בתוך ה mainGrid אתה יוכל להכניס מה שתרצה.
                      [שימו לב! יש פה טריק שבעזרתו אפשר לעשות UserControl עם XAML וגם להכניס לתוכו פקדים עם שמות - בעיה שהועלת כאן בפורום בעבר וגם בכמה מקומות ברשת ולא נמצא לה פתרון.]

                      פורסם במקור בפורום CODE613 ב18/03/2014 19:00 (+02:00)

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

                        אוי רחמים אפשר לדעת מה לא טוב בטמפלט שהלכת כה רחוק?
                        ותאמין לי שהלכת רחוק.

                        פורסם במקור בפורום CODE613 ב18/03/2014 19:57 (+02:00)

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

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

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

                          זה מה שעשיתי עם הטמפלט:

                          <Window x:Class="Window1"
                              xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                              Title="Window1" Height="300" Width="300" Style="{StaticResource WindowTemplate}">
                              <Grid>
                                 
                              </Grid>
                          </Window>
                          

                          והתוצאה בזמן ריצה ... חלון שחור !

                          פורסם במקור בפורום CODE613 ב18/03/2014 20:04 (+02:00)

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

                            @רחמים

                            והתוצאה בזמן ריצה ... חלון שחור !

                            יאהווו!! ולכן עבדת כ"כ קשה! אז קבל שתי אפשרויות: או קבע צבע רקע לאלמנט הראשי בטמפלט (בורדר או גריד), או אפשרות מרתקת יותר קבע את שני הערכים האלו: WindowStyle="None" AllowsTransparency="True" בסטייל או בחלון.

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

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

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

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

                              טוב אז פתרנו את הבעיה של הצבע.
                              אבל בכל מקרה לדעתי יש עדיפות לפקד מאשר לטמפלט במקרה שתרצה שלכל החלונות יהיה עיצוב שווה אבל מצד שני תוכל להוסיף לכל חלון אייקון משלו בכותרת העליונה למשל, וכן תוכל להוסיף איזה סרגל כלים לכותרת התחתונה לפי האופי של החלון הספציפי. וכן תוכל להגדיר כיתוב בכותרת העליונה/התחתונה בלא להיות תלוי בכותרת החלון עצמו.

                              פורסם במקור בפורום CODE613 ב18/03/2014 21:22 (+02:00)

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

                                @רחמים

                                טוב אז פתרנו את הבעיה של הצבע.
                                אבל בכל מקרה לדעתי יש עדיפות לפקד מאשר לטמפלט במקרה שתרצה שלכל החלונות יהיה עיצוב שווה אבל מצד שני תוכל להוסיף לכל חלון אייקון משלו בכותרת העליונה למשל, וכן תוכל להוסיף איזה סרגל כלים לכותרת התחתונה לפי האופי של החלון הספציפי. וכן תוכל להגדיר כיתוב בכותרת העליונה/התחתונה בלא להיות תלוי בכותרת החלון עצמו.

                                ייתכן.
                                אבל שים לב שבשביל זה לא צריך UserControl שמכיל את תוכן החלון, די בUserControl שנמצא בראש החלון.
                                בכל מקרה, לעולם לא צריך שילוב של שתי UserControls.

                                פורסם במקור בפורום CODE613 ב18/03/2014 22:14 (+02:00)

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

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

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

                                  אלו לא באמת 2 UserControl אלא רק 1 רק בהצהרה הם שניים כדי שאחד יכיל את הXAML והשני את הקוד וכך יהיה אפשר מצד אחד לעצב את ה UserControl ב XAML ומצד שני להוסיף פקדים לתוך ה UserControl ולתת להם שם בלא לקבל שגיאה.

                                  פורסם במקור בפורום CODE613 ב18/03/2014 22:27 (+02:00)

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

                                    @דוד ל.ט.

                                    אני לא יודע באמת למה במן ריצה זה לא עובד ככה, בכל אופן אם מפרשים לסטייל KEY ונותנים לו התייחסות של סטטיק ריסורס בכל חלון (במאפיין סטייל) אז זה עובד.

                                    תכל'ס אצלי עובד רק בזמן עיצוב ולא בזמן ריצה

                                    @דוד ל.ט.

                                    שמואל, אם אתה רוצה לשנות בכל חלון את הפקדים שבכותרת עליונה ותחתונה, אז למה טמפלט? תעתיק ותדביק מפעם אחת ממנה אתה מרוצה.
                                    אם אתה רוצה שרק הטקסט וכדו' ישתנה אז תוכל לעשות בטמפלט בינדינג לאלמנטים אחרים של החלון כמו לטייטל ועוד.

                                    בלית ברירה אעשה כך אבל זה לא הדרך למסמכי xaml ארוכים ומייגעים
                                    תאר לך גם 10 חלונות ויותר וכל שינוי תרוץ לעדכן בכולם

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

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

                                      @שמואל

                                      @דוד ל.ט.
                                      אני לא יודע באמת למה במן ריצה זה לא עובד ככה, בכל אופן אם מפרשים לסטייל KEY ונותנים לו התייחסות של סטטיק ריסורס בכל חלון (במאפיין סטייל) אז זה עובד.

                                      תכל'ס אצלי עובד רק בזמן עיצוב ולא בזמן ריצה

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

                                      @שמואל

                                      @דוד ל.ט.
                                      שמואל, אם אתה רוצה לשנות בכל חלון את הפקדים שבכותרת עליונה ותחתונה, אז למה טמפלט? תעתיק ותדביק מפעם אחת ממנה אתה מרוצה.

                                      אם אתה רוצה שרק הטקסט וכדו' ישתנה אז תוכל לעשות בטמפלט בינדינג לאלמנטים אחרים של החלון כמו לטייטל ועוד.

                                      בלית ברירה אעשה כך אבל זה לא הדרך למסמכי xaml ארוכים ומייגעים
                                      תאר לך גם 10 חלונות ויותר וכל שינוי תרוץ לעדכן בכולם

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

                                      פורסם במקור בפורום CODE613 ב19/03/2014 11:10 (+02:00)

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

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

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

                                        WpfApplication6.rarמצורף קוד בסיסי מישהוא יכול לתת את הדעת למה זה לא עובד לי?
                                        תודה רבה

                                        פורסם במקור בפורום CODE613 ב19/03/2014 11:44 (+02:00)

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

                                          תחליף את השורה הזאת

                                          Template="{Binding Mode=OneWay, Source={StaticResource myWindowStyle}}"
                                          

                                          בזאת:

                                          Style="{StaticResource myWindowStyle}"
                                          

                                          פורסם במקור בפורום CODE613 ב19/03/2014 11:53 (+02:00)

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

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

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

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