カスタム依存プロパティにバインドするときにWPFデザイナを更新する際に問題が発生しました。WPFデザイナーと依存関係プロパティへのバインドの問題
次の例では、カスタムMyAwesomeFillプロパティを設定する単純な楕円を作成します。 MyAwesomeFillのデフォルト値は黄色のソリッドカラーブラシです。
問題は、デザイナーの制御フォームでは、楕円(黄色)のデフォルトの塗りつぶしが見えず、代わりに楕円が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