【问题标题】:Bind in code behind (C++/CX)在代码中绑定 (C++/CX)
【发布时间】:2014-10-16 10:19:35
【问题描述】:

我有这个 xaml:

<Rectangle x:Name="MyRectangle" Height="{Binding MyCount}" />

我想改为使用我的 C++/CX 代码进行绑定。在 WinJS 中我可以这样做:

datacontext.bind("MyCount", function () { MyRectangle.Height = MyCount; });

C++/CX 中是否有等价物?

【问题讨论】:

    标签: xaml windows-runtime winrt-xaml c++-cx


    【解决方案1】:

    您可以创建一个Windows.UI.Xaml.Data.Binding 对象并将其连接到代码隐藏中。

    Binding^ b = ref new Binding();
    b->Mode = BindingMode::OneTime;
    b->Source = MyCount;
    MyRectangle->SetBinding(FrameworkElement::HeightProperty, b);
    

    【讨论】:

    • 这很好——尽管我真正追求的是在绑定属性更新时执行函数/lambda 的某种方式。这可能吗?
    • 我不确定你的意思。您想跳过绑定并只处理属性更改通知吗? MyCount 可以是一个属性,并将使用正常的属性更新系统。您可以根据需要将 BindingMode 设置为 OneWay 或 TwoWay。如果您绑定到自己的属性而不是矩形的高度,那么您的属性会收到通知
    • MyCount 更新时我想致电Windows::UI::Xaml::VisualStateManager::GoToState(control, "StateName", true);。这样我就可以更改一堆属性,包括预定义的转换和所有内容。我想我可以通过在属性更改时触发回调来做到这一点。
    猜你喜欢
    • 2018-02-06
    • 2013-07-03
    • 2014-12-14
    • 1970-01-01
    • 2018-02-07
    • 2017-08-05
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多