从XAML设置代码隐藏值

时间:2015-12-15 19:34:54

标签: c# wpf xaml

我的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中完成此操作? 我只发现了关于获取/绑定值(到控件)但没有处理设置它的文章...

任何帮助表示赞赏!谢谢!

1 个答案:

答案 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功能(如依赖属性和清除绑定)来解决您的问题。您可以尝试扩展您的问题。