Задаване на стойност на прикачените свойства с ChangePropertyAction

Бих искал да знам дали ChangePropertyAction в WPF поддържа промяна на стойността на прикачените свойства на целевия обект? Когато се опитвате да укажете прикачено свойство като Canvas.Top, се хвърля изключение (няма значение дали името му е оградено със скоби или не). Благодаря предварително за полезните отговори ;)


person Gena Verdel    schedule 18.04.2012    source източник


Отговори (1)


За съжаление това не изглежда възможно. Вижте тази публикация http://forums.silverlight.net/t/201358.aspx

Ако поставите съответните свойства на вашия модел на изглед, напр.

public class MainWindowViewModel : INotifyPropertyChanged
{
    public MainWindowViewModel()
    {
        Left = 50;
        Top = 50;
    }

    public void AddOneHundred()
    {
        Left += 100;
    }

    private double _left;
    public double Left
    {
        get { return _left; }
        set
        {
            _left = value;

            RaisePropertyChanged("Left");
        }
    }

    private void RaisePropertyChanged(string propertyName)
    {
        var handler = PropertyChanged;
        if(handler != null)
        {
            handler(this, new PropertyChangedEventArgs(propertyName));
        }
    }

    public double Top { get; set; }

    #region Implementation of INotifyPropertyChanged

    public event PropertyChangedEventHandler PropertyChanged;

    #endregion
}

и се свържете с тях (отляво, отгоре), след което можете да използвате CallMethodAction или ChangePropertyAction в модела на изглед

    <Canvas>
        <Canvas x:Name="theCanvas">
            <TextBlock Text="TextBlock" Canvas.Top="{Binding Top}" Canvas.Left="{Binding Left}"/>

            <Button Content="Button" Canvas.Left="48" Canvas.Top="96" Width="75">
                <i:Interaction.Triggers>
                    <i:EventTrigger EventName="Click">
                        <!--<ei:CallMethodAction TargetObject="{Binding}" MethodName="AddOneHundred"/>-->
                        <ei:ChangePropertyAction TargetObject="{Binding}" PropertyName="Left" Value="200"/>
                    </i:EventTrigger>
                </i:Interaction.Triggers>
            </Button>
        </Canvas>
    </Canvas>   
person Phil    schedule 18.04.2012