WPFUserCotrolを作成しました。その中には、デフォルトで3つのグリッドがあります
visibility="collapsed"
。次のような依存関係プロパティを作成しました。
public int PanelId
{
get { return (int)GetValue(PanelIdProperty); }
set { SetValue(PanelIdProperty, value); }
}
public static readonly DependencyProperty PanelIdProperty =
DependencyProperty.Register("PanelId", typeof(int), typeof(RecurrencePattern), new UIPropertyMetadata(1));
このユーザーコントロールを他のxamlで使用したいと思います。私はそれを次のように宣言します:
<uc:RecurrencePattern PanelId="2"/>
これを行うことで、PanelIdは2になり、実行時のデフォルトコンストラクターで、これを使用して表示されるパネルを設定できると思いました。代わりに、UIPropertyMetadata(1)で定義されているPanelIdは1です。xamlで提供される値を使用して、表示するグリッドを設定するにはどうすればよいですか。私は持っています:
<Grid x:Name="a" Visibility="Collapsed">
<label Content"a"/>
</Grid>
<Grid x:Name="b" Visibility="Collapsed">
<label Content"b"/>
</Grid>
<Grid x:Name="c" Visibility="Collapsed">
<label Content"c"/>
</Grid>
デフォルトのコンストラクタは次のとおりです。
switch (PanelId)
{
case 1:
a.Visibility = System.Windows.Visibility.Visible;
break;
case 2:
b.Visibility = System.Windows.Visibility.Visible;
break;
case 3:
c.Visibility = System.Windows.Visibility.Visible;
break;
default:
a.Visibility = System.Windows.Visibility.Visible;
break;
}
ありがとうございました。