locked
Changing two properties togetther with content change RRS feed

  • שאלה

  • Hi,

    I have a textbox. When I click OK, I want to set two properties by this Textbox.Text.

    How do I do it in XAML and not in code behind ?

    suppose I have object1.ProjectName and object2.ProjectName that I want them both to get the Textbox.Text

    Thanks


    • נערך על-ידי YI1010 יום שני 08 אפריל 2013 15:02
    יום שני 08 אפריל 2013 15:01

תשובות

  • אין ממש דרך לעשות את זה ב-Pure XAML.

    אפילו להגיב לעדכן ל-property אחד רק מתי שלחצו על כפתור ב-pure xaml זה לא טריויאלי (צריך לחשוב עם זה באמת אפשרי, אולי ב-WPF עם טריגרים....).

    בכל מקרה לא הייתי בכלל הולך לכיוון הזה.

    בהנחה שאתה עובד ב-MVVM (ומאוד כדאי לך לעבוד כך).

    אתה צריך לממש Command שמגיב לכפתור ה-OK, אתה יכול להעביר ב-CommandParameter את הטקסט כפרמטר ולעדכן את השדות למשל.

    לדוגמא:

    <StackPanel>
      <TextBox x:Name="myInput"/>
      <Button Content="OK" Commmand="{Binding OkCommand}" CommandParameter="{Binding Text, ElementName=myInput}"/>
    </StackPanel>
    
    ------------- ViewModel -------------
    
    private DelegateCommand<string> _okCommand;
    
    public DelegateCommand<string> OkCommand 
           {
                get
                {
                    return _okCommand?? (_okCommand= new DelegateCommand<sting>(p =>                                                    {
      object1.ProjectName = p;
      object2.ProjectName = p;
    
    
                                                                                                                  }));
      }
    }


    Ariel Ben Horesh | twitter: @arielbh blog: http://blogs.microsoft.co.il/blogs/arielbh/

    • סומן כתשובה על-ידי Eran Sharvit יום רביעי 10 אפריל 2013 13:43
    יום שלישי 09 אפריל 2013 16:02