Puede establecer el valor predeterminado en PropertyMetadata (snippets del Dr. WPF al rescate).
#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
EDITAR *
Si desea cambiar el valor - se puede, pero si se utiliza una unión básica que es OneWay
- es decir - que toma el valor de una fuente vinculante y lo establece en el propiedad de dependencia: el enlace dejará de funcionar porque los valores de origen y destino ya no se sincronizarán.
Si configura Mode="TwoWay"
- la fuente de enlace se actualizará cuando el destino de enlace (su control) modifique la propiedad de dependencia, por lo que el enlace seguirá siendo válido y continuará funcionando en ambos sentidos.
Su respuesta indica que al establecer el valor se rompe el enlace, que fue la razón por la que formulé la pregunta. La única alternativa que puedo pensar es implementar INotifyPropertyChanged y usar una propiedad "regular", pero los usuarios no pueden vincularse a ella. –
Hmmm, de hecho, me confundí. El enlace no se romperá si configura el modo en TwoWay. –
Según http://msdn.microsoft.com/en-us/library/windows/apps/hh700353 Las vinculaciones se tratan como un valor local a los efectos de la prioridad de valor de propiedad de dependencia, lo que significa que si establece otro valor local a una propiedad que originalmente tenía un valor de Enlace, eliminará el enlace. Este es el comportamiento que parece experimentar –