System.Windows.Interactivity
これを行うには、アセンブリ ( msdn ) を使用できます。
最初: プロパティを設定するヘルパー クラスを作成します。
public class SetterAction : TriggerAction<DependencyObject>
{
public SetterAction()
{
Setters = new List<Setter>();
}
public List<Setter> Setters { get; set; }
protected override void Invoke(object parameter)
{
foreach (var item in Setters)
{
AssociatedObject.SetValue(item.Property, item.Value);
}
}
}
XAML:
<TextBox Text="{Binding Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
Background="Transparent" IsReadOnly="True" BorderThickness="0" TextWrapping="Wrap"
Height="30" Width="200">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseDoubleClick">
<i:EventTrigger.Actions>
<local:SetterAction>
<local:SetterAction.Setters>
<Setter Property="TextBox.IsReadOnly" Value="False" />
<Setter Property="TextBox.Background" Value="Green" />
</local:SetterAction.Setters>
</local:SetterAction>
</i:EventTrigger.Actions>
</i:EventTrigger>
<i:EventTrigger EventName="LostFocus">
<i:EventTrigger.Actions>
<local:SetterAction>
<local:SetterAction.Setters>
<Setter Property="TextBox.IsReadOnly" Value="True" />
<Setter Property="TextBox.Background" Value="Red" />
</local:SetterAction.Setters>
</local:SetterAction>
</i:EventTrigger.Actions>
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBox>
どこi
にある:
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"