תשובה calender

  • יום שני 13 פברואר 2012 10:37
     
     

    שלום רב!

    לאחר שעות וימים של חיפושים אחר לוח שנה עם ארועים עבור WPF לא מצאתי כלום 

    כן , יש כמה בודדים מאוד מסובכים ואני חדש  אולי יהיה מי שיפתח את עיניי עם לוח שנה שאפשר להכניס בו ארועים עבור WPF # C קל שאפשר לעבוד איתי גם פשוט כמוני  

    איך אפשר להגדיל את הלוח הקיים ?

    נא להבין אותי אני מתוסכל כברסליחה ותודה מראש

כל התגובות

  • יום שני 13 פברואר 2012 09:54
     
     
    אולי ידוע למישהו על לוח שנה חינם בWPF  שאפשר לשים הערות c#
    • הועבר על-ידי Ido Flatow. _MVP יום שני 13 פברואר 2012 15:13 הועבר לפורום רלוונטי (מאת:C# and .NET Framework)
    • מוזג על-ידי Elad_KatzModerator יום שלישי 14 פברואר 2012 12:02
    • מוזג על-ידי Elad_KatzModerator יום שלישי 14 פברואר 2012 12:02
    •  
  • יום שני 13 פברואר 2012 11:51
     
     

    שלום

    ראה מה אתה יכול ללמוד מכאן:

    http://www.codeproject.com/Articles/30329/Creating-an-Outlook-Calendar-using-WPF-Part-1


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

  • יום שני 13 פברואר 2012 11:59
     
     תשובה קוד כלול

    התשובה מתייחסת ל - Calendar של מיקרוסופט,

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

    כמובן שהפתרון משתנה בהתאם לצרכים, אבל הנה הכיוון בגדול:

    1. יצירת Converter שמכיל את כל ה- Event שלך, למשל:

    public class CalendarConverter : IValueConverter
        {
            static Dictionary<DateTime, string> myEvents = new Dictionary<DateTime, string>();
    
            static CalendarConverter()
            {
                myEvents.Add(new DateTime(2012, 2, 17), "My First Event");
                myEvents.Add(new DateTime(2012, 2, 21), "My Second Event");
            }
    
            public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
            {
    
                string text;
                if (value == null) return null;
                if (!myEvents.TryGetValue((DateTime)value, out text))
                    text = null;
                return text;
            }
    
    
            public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                return null;
            }
        }

    2. שינוי ה- Style של DayButton

       <Style TargetType="Calendar">
                <Setter Property="CalendarDayButtonStyle">
                    <Setter.Value>
                        <Style TargetType="{x:Type CalendarDayButton}">
                            <Setter Property="MinWidth" Value="30"/>
                            <Setter Property="MinHeight" Value="30"/>
                            <Setter Property="FontSize" Value="10"/>
                            <Setter Property="HorizontalContentAlignment" Value="Center"/>
                            <Setter Property="VerticalContentAlignment" Value="Center"/>
                            <Setter Property="Template">
                                <Setter.Value>
                                    <ControlTemplate TargetType="{x:Type CalendarDayButton}">
                                        <Grid>
                                            
                                            <Rectangle x:Name="TodayBackground" Fill="#FFAAAAAA" Opacity="0" RadiusY="1" RadiusX="1"/>
                                            <Rectangle x:Name="SelectedBackground" Fill="#FFBADDE9" Opacity="0" RadiusY="1" RadiusX="1"/>
                                            <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}"/>
                                            <Rectangle x:Name="HighlightBackground" Fill="#FFBADDE9" Opacity="0" RadiusY="1" RadiusX="1"/>
                                            
                                            <StackPanel>
                                                <ContentPresenter x:Name="NormalText" TextElement.Foreground="#FF333333" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="5,1,5,1" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                                                <TextBlock Text="{Binding Converter={StaticResource CalendarConverter}}"></TextBlock>
                                            </StackPanel>
                                            
                                            <Path x:Name="Blackout" Data="M8.1772461,11.029181 L10.433105,11.029181 L11.700684,12.801641 L12.973633,11.029181 L15.191895,11.029181 L12.844727,13.999395 L15.21875,17.060919 L12.962891,17.060919 L11.673828,15.256231 L10.352539,17.060919 L8.1396484,17.060919 L10.519043,14.042364 z" Fill="#FF000000" HorizontalAlignment="Stretch" Margin="3" Opacity="0" RenderTransformOrigin="0.5,0.5" Stretch="Fill" VerticalAlignment="Stretch"/>
                                            <Rectangle x:Name="DayButtonFocusVisual" IsHitTestVisible="false" RadiusY="1" RadiusX="1" Stroke="#FF45D6FA" Visibility="Collapsed"/>
                                        </Grid>
                                    </ControlTemplate>
                                </Setter.Value>
                            </Setter>
                        </Style>
                    </Setter.Value>
                </Setter>
    
            </Style>

    שים לב שיש כמה שינויים מה- Template המקורי, כמו כן הורדתי את כל ה- VSM's לצורך הבהירות.

    עוד אפשר לקרוא כאן, הפתרון שלי מבוסס על זה.


    My Blog: http://benjaminet.wordpress.com

    • סומן כתשובה על-ידי mm-m יום שלישי 14 פברואר 2012 12:26
    •  
  • יום שני 13 פברואר 2012 12:56
     
     

    שלום אסף !

    ראשית תודה רבה ראיתי מה שעשית אך לא בדיוק הבנתי איך לבנות את הcalender 

    להערתך מה הצרכים ? ,  לוח פשוט שאפשר לכתוב לתוכו הערות  ותזכורות ראיתי בפוסט שלך שהכנסת outlook לתוך פרויקט הורדתי וזה לא עבד(אולי אין 2010 רק 2007?)

    אך אם יש רעיון כזה בWPF ראיתי שהרבה מנסים לוחות כמו outlook אך אולי כבר יש משהו חצי מובנה  אני מנסה להמשיך להתעמק במה שכתבת למעלה מקווה שבסוף האסימון יפול

    ושוב תודה על השקעתך

    והצלחה רבה

  • יום שני 13 פברואר 2012 13:19
     
     

    שים קלנדר בתוך המסך \ UserControl,

    תוסיף את ה- Style המצורף כ- Resource,

    ואת כל האירועים תכניס לתוך ה- Converter.

    אם עדיין לא ברור אשתדל להעלות אח"כ דוגמא מלאה.

    (לא הבנתי את ההערה לגבי ה- Outlook  ובאיזה פוסט מדובר)

    אסף.


    My Blog: http://benjaminet.wordpress.com

  • יום שני 13 פברואר 2012 20:01
     
     

    אסף שלום !

    עשיתי כדבריך וקופץ לי שגיאה ללא הסבר שחסר משהו

    שמתי את הstyle בתוך  window.resources  ואח"כ את הקלנדר

    והקוד ומשום מה זה לא זז (תקוע) 

    סליחה על ההפרעה  ותודה על הכל 

  • יום שלישי 14 פברואר 2012 08:36
     
     
    תוכל לפרסם את הקוד \ מה בדיוק אתה מקבל?

    My Blog: http://benjaminet.wordpress.com

  • יום שלישי 14 פברואר 2012 09:48
     
     

      אסף שלום וברכה !

    Provide value on 'System.Windows.Markup.StaticResourceHolder' threw an exception.

    הוא אינו מוצא את  converter אפילו שהכנסתי אותו במקום

    תודה ושוב תודה על התייחסותך  בסבלנות רבה וסליחה איני מצליח וזה משגע אותי

  • יום שלישי 14 פברואר 2012 11:55
     
     תשובה קוד כלול

    כדאי לראות גם את ה- Inner Exception שכנראה נמצא שם,

    אבל אתה בטוח שהגדרת את ה- Converter כמו שצריך?

    לא הבאתי את זה בדוגמא:

    <Window x:Class="WpfCalendar.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:local="clr-namespace:WpfCalendar"
            Title="MainWindow" Height="350" Width="525">
        <Window.Resources>
            <local:CalendarConverter x:Key="CalendarConverter"></local:CalendarConverter>
            


    My Blog: http://benjaminet.wordpress.com

    • סומן כתשובה על-ידי mm-m יום שלישי 14 פברואר 2012 12:25
    •  
  • יום שלישי 14 פברואר 2012 12:28
     
     

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

    ושוב תודה על העזרה והסבלנות

    ובהצלחה  לך אסף

  • יום שלישי 14 פברואר 2012 19:34
     
     

    אסף שלום וכל החברים ! (זה שוב אני )

    לגבי הלוח כמו שכתבתי למעלה אני רוצה לוח שאפשר לכתוב הערות כל יום  ולראות אותם

    ומה ששלחת עונה על ההגדרה הבנתי  את המשחק עם הסטייל 

    אך משום מה יחודש קודם או אח"כ זה לא עובד (חוזר להיות קטן)

    ראיתי את הלוח שנה הזה  http://www.eggheadcafe.com/tutorials/xaml/88c6f252-ba7f-4789-97e8-1bd7690ca385/styling-the-wpf-calendar-to-resemble-outlooks-month-view-calendar.aspx

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

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

    בתודה על כל מילה

    נ.ב בעצם אתה כתבת על חיבור אאוטלוק לתוכנה אם הבנתי נכון