locked
MVVM RRS feed

  • שאלה

  • שלום 

    לאחר שקראתי מעט על MVVM ניסיתי לממש זאת בפרויקט חדש.

    קוד לדוגמא:

     public class ViewModel 
        {     
            RelayCommand Button{ get; set; }
            RelayCommand Image { get; set; }
           
            public ViewModel()
            {
                Button = new RelayCommand(ButtonPressed);
                Image = new RelayCommand(image_tapped);
            }
    
            private void image_tapped()
            {
                //TODO...
            }
            private void ButtonPressed()
            {
                //TODO...            
            }
    }
    
    
    <Page
        x:Class="MVVMProject.MainPage"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="using:MVVMProject"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:rt="using:WinRtBehaviors"
        xmlns:Win8nl_Behavior="using:Win8nl.Behaviors"
        mc:Ignorable="d">
        <Grid >      
           <Button
                Width="100"
                Height="100"
                 Command="{Binding Button}"                                          
                HorizontalAlignment="Right"
                Content="Prees">         
            </Button>
            <Image
                Source="/Assets/Logo.png"
                Width="100"
                Height="100">
                <rt:Interaction.Behaviors>
                    <Win8nl_Behavior:EventToCommandBehavior
                        Event="Tapped"
                        Command="Image">
                       
                    </Win8nl_Behavior:EventToCommandBehavior>
                </rt:Interaction.Behaviors>
            </Image>
        </Grid>
    </Page>
     public sealed partial class MainPage : Page
        {
            public MainPage()
            {
                this.DataContext = new ViewModel();
                this.InitializeComponent();
            }
    
            void MainPage_Loaded(object sender, RoutedEventArgs e)
            {
            }
    }

    אני משתמש ב - WinRtBehaviors,Win8nl.Behavior כמו שראיתי בדוגמאות 

    וכאשר אני לוחץ על הכפתור או על התמונה לא קורה כלום.

    אשמח לקבל עזרה.


    יום שלישי 02 יולי 2013 13:36

תשובות

  • היי,

    ראשית מומלץ לא לתת שמות ל-commands שמעידים על events או פקד כלשהו. זה יוצר מעין תלות ברכיבי UI ועדיף להמנע מכך. במקום יש לרשום משהו בסגנון EmailSelectedCommand, DeleteUserCommand, וכו'.

    שנית, חסרה הגדרת binding שקושרת את ה- command ל- behavior ובגלל זה זה לא עובד.

    לדוגמה:

    <Win8nl_Behavior:EventToCommandBehavior
                        Event="Tapped"
                        Command="{Binding Image}">

    בברכה,

    תומר שמם


    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    יום חמישי 11 יולי 2013 11:02
    מנחה דיון