Laden...
S
s0h0
myCSharp.de - Member
150
Themen
683
Beiträge
Letzte Aktivität
vor 11 Jahren
Dabei seit
16.07.2006
Alter
40
Beruf
Software Entwickler
Herkunft
Nürnberg
Interessen
Fussball, Snowboard
Erstellt vor 11 Jahren

Hallo,

ich habe eine AttachedProperty welche eine Liste ist, die CustomClass in dieser Liste hat ebenfalls zwei Listen mit CustomClasses.

Wenn ich eine gebunden Eigenschaft ändere wird nur der ChangedCallback innerhalb des Items gecalled.

Ich müsste entweder das changed event bis nach oben hoch geben oder im unteren ChildItem wissen zu welchem Object(UIElement diese Eigenschaft gebunden wurde?

Hat jemand eine Idee wie ich in einem AttachedProperty Collection Item auf das Object zugreife mit dem die AttachedProperty gesetzt wurde?

Erstellt vor 11 Jahren

FreezableCollection und das binding mit x:Reference war die Lösung...

BindingValue="{Binding Path=Text, Source={x:Reference tb_value} }"

Danke!

Erstellt vor 11 Jahren

Ok, also wenn ich einfach einen statischen Text festlege wird die PropertyChangedCallback methode gecalled. In Snoop sehe ich das die Property leer ist, wenn ich sie mit snoop setze wird der callback ebenfalls gefeuert. Nur mit einem Binding bleibt die Property immer leer...

Erstellt vor 11 Jahren

Nur mit DependencyObject geht es auch nicht. Aber ich sehe das der Setter für BindingValue in der ComparsionCondition Klasse nie gecalled wird. Obwohl ich den Wert im XAML setze??

Hat jemand eine Idee warum der Wert nie gesetzt wird?

Erstellt vor 11 Jahren

Hallo,

danke für deine Antwort. Key ist nur in RessourceDictionaries erlaubt. Ich denke aber auch nicht das das helfen würde.

Viele Grüße,

Simon

Erstellt vor 11 Jahren

Hallo,

ich habe eine Liste als attached property. Die Liste besteht aus einer CustomClass.
Im Xaml Code würde ich gerne eine dieser Properties zu einer TextBox binden.

Wenn ich das versuche, kriege ich kein update der Textbox durchgereicht. Die Set Methode wird nie aufgerufen, daher denke ich das Binding geht verloren.

Hat jemand eine Idee dazu?

CustomClass


    public class ComparsionCondition : DependencyObject, INotifyPropertyChanged
    {
        public static readonly DependencyProperty BindingValueProperty =
             DependencyProperty.Register("BindingValue", typeof(string),
             typeof(ComparsionCondition), new PropertyMetadata("bindval"));

        public string BindingValue 
        {
            get
            {
                return (string)GetValue(BindingValueProperty);
            }
            set
            {
                SetValue(BindingValueProperty, value);
                OnPropertyChanged("BindingValue");
            }
        }

        #region INotifyPropertyChanged Member

        public event PropertyChangedEventHandler PropertyChanged;
        protected virtual void OnPropertyChanged(string propertyName) 
        {
            PropertyChangedEventHandler handler = PropertyChanged;
            if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
        }

        #endregion
    }

Behavior:


 public static class ComparsionBehavior 
    {
        #region ComparsionConditions
        public static TrulyObservableCollection<ComparsionCondition> GetComparsionConditions(DependencyObject frameworkElement)
        {
            return (TrulyObservableCollection<ComparsionCondition>)frameworkElement.GetValue(ComparsionConditionsProperty);
        }

        public static void SetComparsionConditions(DependencyObject frameworkElement, TrulyObservableCollection<ComparsionCondition> value) 
        {
            frameworkElement.SetValue(ComparsionConditionsProperty, value);
        }

        public static readonly DependencyProperty ComparsionConditionsProperty = DependencyProperty.RegisterAttached(
            "ComparsionConditions", typeof(TrulyObservableCollection<ComparsionCondition>), typeof(ComparsionBehavior), new UIPropertyMetadata(new TrulyObservableCollection<ComparsionCondition>(), OnComparsionConditionsChanged));

        static void OnComparsionConditionsChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e) 
        {
            HandlePropertyChanged(sender);
        }
        #endregion
    }

XAML usage


<TextBox Text="85" x:Name="tb_value"></TextBox>
 <Border>
                <Behavior:ComparsionBehavior.ComparsionConditions>
                    <Behavior:ComparsionCondition BindingValue="{Binding Path=Text, ElementName=tb_value}">
                    </Behavior:ComparsionCondition>
                </Behavior:ComparsionBehavior.ComparsionConditions>
 </Border>

Erstellt vor 11 Jahren

Hallo,

ich habe schon mal appointments in c# erstellt.
Nun würde ich gerne einen Kompletten Kalender und Termine, anhand von XML Daten, aus c# generieren. Den link auf diesen im Intervall neu generierten Kalender dann auch später in outlook importieren.

Hat jemand einen Tip oder Link wie ich einen kompletten Kalender erstellen kann?

Vielen Dank und schöne Grüße,

Simon

Erstellt vor 12 Jahren

Haha, das ist 3 Jahre her, ich weiss nicht mal mehr für was das war 😃 DAnke trotzdem.

Erstellt vor 13 Jahren

hmm danke für die Antwort das macht es natuerlich leichter... Hatte das bisher nur mal bei Bildern gemacht mit unterschiedlichen Groessen vielleicht war ich deshalb etwas zu kompliziert... Aber auch wenn das natuerlich stimmt das das Verhältnis 1,25 betraegt. Buttons die 30x30 sind sind nun eher Rechtecke und länger wie hoch...

       
private void SetApplicationStartUpPosition()
        {
            double originalHeight = 1024;
            double originalWidth = 1280;

            if (Screen.PrimaryScreen.WorkingArea.Height < originalHeight)
            {
                double newWidth = 1.25 * Screen.PrimaryScreen.WorkingArea.Height;
                this.Width = newWidth;
                this.Height = Screen.PrimaryScreen.WorkingArea.Height;
            }
        }
Erstellt vor 13 Jahren

Ich hab jetzt mal was hingemurkst aber is nicht besonders schön 😃


 private void SetApplicationStartUpPositionAndSize()
        {
            double originalHeight = 1024;
            double originalWidth = 1280;
            double newWidth = originalWidth;

            double onePercentOriginal = originalHeight/100;
            double newPercentageHeight = SystemParameters.FullPrimaryScreenHeight/onePercentOriginal;

            newPercentageHeight = Math.Truncate(newPercentageHeight);

            double percentageHeightChangeToOriginal = newPercentageHeight - 100;

            if (percentageHeightChangeToOriginal == 0)
            {
                percentageHeightChangeToOriginal = 1;

                newWidth = originalWidth*percentageHeightChangeToOriginal;
            }
            else
            {
                double widthToSubstract = originalWidth * percentageHeightChangeToOriginal;
                newWidth = widthToSubstract - originalWidth;
            }

            this.Width = newWidth;
            this.Height = SystemParameters.FullPrimaryScreenHeight;
  
            WindowStartupLocation = WindowStartupLocation.Manual;
            Rectangle workingArea = Screen.PrimaryScreen.WorkingArea;
            Left = (workingArea.Width - 1280)/2;
            Top = (workingArea.Height - 1024)/2;
        }

10 von 682 Beiträgen