Бих искал да знам дали ChangePropertyAction в WPF поддържа промяна на стойността на прикачените свойства на целевия обект? Когато се опитвате да укажете прикачено свойство като 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>
person
Phil
schedule
18.04.2012