我的xaml.cs
中有以下变量:
bool _isdragging = false;
现在我想从下面的_isdragging
代码中设置xaml
的值:
<ControlTemplate.Triggers>
<Trigger Property="IsDragging" Value="true">
<!--set _isdragging to true-->
</Trigger>
<Trigger Property="IsDragging" Value="false">
<!--set _isdragging to false-->
</Trigger>
</ControlTemplate.Triggers>
我怎样才能做到这一点?如何在xaml
/ wpf
中完成此操作?
我只发现了关于获取/绑定值(到控件)但没有处理设置它的文章...
任何帮助表示赞赏!谢谢!
答案 0 :(得分:1)
不,你有一个领域,而不是一个专业。 你可以使用这样的setter:
<Trigger Property="IsDragging" Value="true">
<Setter Property="IsDragging" Value="True" />
</Trigger>
但IsDragging应该是你控件的dependency property
您可以在setter中使用绑定:
<Setter Property="IsDragging"
Value="{Binding AnotherProperty, RelativeSource={RelativeSource Self}}" />
<强>更新强>
对于您的方案,您可以使用变通方法从另一个控件访问简单的公共字段。添加Behavior类并绑定到其值:
<Setter Property="behaviours:IsDraggingBehaviour.IsDragging" Value="True"/>
然后在你的Behavior类中:
public static class IsDraggingBehaviour
{
public static bool GetSelectAll(YourControl target)
{
return (bool)target.GetValue(IsDraggingAttachedProperty);
}
public static void SetSelectAll(YourControl target, bool value)
{
target.SetValue(IsDraggingAttachedProperty, value);
}
public static readonly DependencyProperty IsDraggingAttachedProperty = DependencyProperty.RegisterAttached("IsDragging", typeof(bool), typeof(YourControl), new UIPropertyMetadata(false, OnSelectIsDraggingPropertyChanged));
static void OnSelectIsDraggingPropertyChanged(DependencyObject o, DependencyPropertyChangedEventArgs e)
{
var control = (YourControl) o;
//control.AccessYourProperty = true; change your value here
}
}
但我认为有一种更好的方法可以通过更改组合或使用WPF功能(如依赖属性和清除绑定)来解决您的问题。您可以尝试扩展您的问题。