2012-04-18 7 views
2

WPFのChangePropertyActionが、添付オブジェクトの値を対象オブジェクトで変更できるかどうかを知りたいですか? Canvas.Topのような添付プロパティを指定しようとすると、例外がスローされます(名前がカッコで囲まれているかどうかは関係ありません)。 便利な返信をお寄せいただきありがとうございます;)ChangePropertyActionで添付プロパティの値を設定する

答えて

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> 
関連する問題