PropertyMetadata에서 기본값을 설정할 수 있습니다 (Dr. 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
EDIT *
값을 변경하려면 - 할 수 있습니다,하지만 당신은 OneWay
입니다 기본 바인딩을 사용하는 경우 - 예 - 그것은 바인딩 소스의 값을 취하고로 설정 종속성 속성 - 원본과 대상 값이 더 이상 동기화되지 않기 때문에 바인딩이 작동을 멈 춥니 다.
Mode="TwoWay"
으로 설정하면 바인딩 대상 (사용자 컨트롤)이 종속성 속성을 수정할 때 바인딩 원본이 업데이트되므로 바인딩이 유효하고 두 방법으로 계속 작업 할 수 있습니다.
당신의 대답은 가치를 설정하는 것이 바인딩을 깨뜨리는 것이라고 지적했습니다. 이것이 제가 질문 한 이유입니다. 내가 생각할 수있는 유일한 대안은 INotifyPropertyChanged를 구현하고 "일반"속성을 사용하는 것입니다. 그러나 사용자는이 속성에 바인딩 할 수 없습니다. –
흠, 사실 - 혼란스러워. 모드를 TwoWay로 설정하면 바인딩이 중단되지 않습니다. –
에 따라 http://msdn.microsoft.com/en-us/library/windows/apps/hh700353 바인딩은 종속성 속성 값 우선 순위를 위해 로컬 값으로 처리되므로 다른 로컬 값을 설정하면 원래 Binding 값을 보유한 속성에 바인딩을 제거합니다. 이것은 내가 겪고있는 것처럼 보이는 동작입니다. –