사용자 지정 종속성 속성에 바인딩 할 때 WPF 디자이너를 업데이트하는 데 문제가 있습니다.WPF 디자이너 및 종속성 속성 바인딩 문제
다음 예제에서는 사용자 정의 MyAwesomeFill 속성으로 채울 간단한 타원을 만듭니다. MyAwesomeFill의 기본값은 Yellow SolidColor 브러시입니다.
디자이너의 제어 양식에서 타원의 기본 채우기 (노란색)를 볼 수없는 대신 타원은 SolidColor (# 00000000)로 채워지는 것이 문제입니다. 그러나 응용 프로그램을 실행하면 모든 것이 완벽하게 작동합니다.
왜 이것이 일어 났는지에 대한 아이디어가 있습니까?
감사합니다.
여기 내가 사용하는 코드입니다 :XAML :
<UserControl x:Class="TestApplication.MyEllipse"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="300" Width="300">
<Grid>
<Ellipse Stroke="Black" StrokeThickness="5" Fill="{Binding MyAwesomeFill}"></Ellipse>
</Grid>
</UserControl>
C 번호 : 뒤에 디자이너에 의해 실행되도록 보장되지
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace TestApplication
{
public partial class MyEllipse : UserControl
{
#region Dependency property MyAwesomeFill
//Define and register dependency property
public static readonly DependencyProperty MyAwesomeFillProperty = DependencyProperty.Register(
"MyAwesomeFill",
typeof(Brush),
typeof(MyEllipse),
new PropertyMetadata(new SolidColorBrush(Colors.Yellow), new PropertyChangedCallback(OnMyAwesomeFillChanged))
);
//property wrapper
public Brush MyAwesomeFill
{
get { return (Brush)GetValue(MyAwesomeFillProperty); }
set { SetValue(MyAwesomeFillProperty, value); }
}
//callback
private static void OnMyAwesomeFillChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
{
MyEllipse m = (MyEllipse)obj;
m.OnMyAwesomeFillChanged(e);
}
#endregion
//callback
protected virtual void OnMyAwesomeFillChanged(DependencyPropertyChangedEventArgs e)
{
}
public MyEllipse()
{
InitializeComponent();
DataContext = this;
}
}
}
사실, 컨트롤을 개발할 때 심각한 후퇴이며 다른 컨트롤을 통해 모양을 확인해야합니다. 창 또는 폴백 값을 기본값과 동일하게 설정해야합니다. VS 2010에서 수정 될 예정입니다. –
글쎄, 1 년이 지나고 2010 년에도 수정되지 않았습니다! 이것은 정말 끔찍한 일입니다 !! – Nils