gpt4 book ai didi

binding - WinRT 自定义控件依赖属性设置/绑定(bind)

转载 作者:行者123 更新时间:2023-12-04 04:29:47 25 4
gpt4 key购买 nike

我正在尝试为 WinRT/Metro 应用程序开发自定义控件。

它有一个依赖属性,我希望能够在自定义控件中设置它的值。但是,使用 SetValue 会破坏控件使用者可能已创建的任何绑定(bind)。

我发现的所有解决方案(例如 SetCurrentValue)似乎都不适用于 WinRT/Metro。有针对这个的解决方法吗?

这听起来很简单,而且 - 老实说! - 我试图在这里和其他地方找到解决方案。任何帮助将不胜感激。

最佳答案

您可以在 PropertyMetadata 中设置默认值(WPF 博士的 snippets 来救援!)。

#region IsAvailable
private static bool DefaultIsAvailable = false;

/// <summary>
/// IsAvailable Dependency Property
/// </summary>
public static readonly DependencyProperty IsAvailableProperty =
DependencyProperty.Register(
"IsAvailable",
typeof(bool),
typeof(CustomControl1),
new PropertyMetadata(DefaultIsAvailable, OnIsAvailableChanged));

/// <summary>
/// Gets or sets the IsAvailable property. This dependency property
/// indicates ....
/// </summary>
public bool IsAvailable
{
get { return (bool)GetValue(IsAvailableProperty); }
set { SetValue(IsAvailableProperty, value); }
}

/// <summary>
/// Handles changes to the IsAvailable property.
/// </summary>
/// <param name="d">
/// The <see cref="DependencyObject"/> on which
/// the property has changed value.
/// </param>
/// <param name="e">
/// Event data that is issued by any event that
/// tracks changes to the effective value of this property.
/// </param>
private static void OnIsAvailableChanged(
DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var target = (CustomControl1)d;
bool oldIsAvailable = (bool)e.OldValue;
bool newIsAvailable = target.IsAvailable;
target.OnIsAvailableChanged(oldIsAvailable, newIsAvailable);
}

/// <summary>
/// Provides derived classes an opportunity to handle changes
/// to the IsAvailable property.
/// </summary>
/// <param name="oldIsAvailable">The old IsAvailable value</param>
/// <param name="newIsAvailable">The new IsAvailable value</param>
protected virtual void OnIsAvailableChanged(
bool oldIsAvailable, bool newIsAvailable)
{
}
#endregion

编辑*

如果您想更改该值 - 您可以,但如果您使用基本绑定(bind) OneWay - 即 - 它从绑定(bind)源获取值并将其设置为依赖属性 - 绑定(bind)将停止工作,因为源值和目标值将不再同步。

如果设置 Mode="TwoWay" - 当绑定(bind)目标(您的控件)修改依赖属性时,绑定(bind)源将被更新,因此绑定(bind)将保持有效并继续双向工作。

关于binding - WinRT 自定义控件依赖属性设置/绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10441600/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com