問題は、DependencyProperty が XAML で指定された値に割り当てられていないことです。
UserControl1 と UserControl2 という 2 つの異なるユーザー コントロールがあり、両方のコントロールに共通する別のユーザー コントロールを定義します。
UserControl1.xaml:
<modulename:MyUserControl ....somecode... DataOrientation="Horizontal">
</modulename:MyUserControl>
UserControl2.xaml
<modulename:MyUserControl ....somecode... DataOrientation="Vertical">
</modulename:MyUserControl>
両方の UserControl の違いは、UserControl1 は水平方向を使用してデータを表示する必要があり、UserControl2 は垂直方向を使用してデータを表示する必要があることです。
MyUserControl のコード ビハインド内で、依存関係プロパティを次のように定義しました。
public static readonly DependencyProperty DataOrientationProperty =
DependencyProperty.Register ("DataOrientation",typeof(String),typeof(MyUserControl));
public String DataOrientation
{
get {return (String)GetValue(DataOrientationProperty);}
set { SetValue(DataOrientationProperty, value); }
}
これらは、MyUserControl.xaml 内のコードの一部です。
...
<StockPanel>
<Grid Name="MyGrid" SizeChanged="MyGrid_SizeChanged">
<Grid.ColumnDefinitions>
<ColumnDefinitions Width="*"/>
<ColumnDefinitions Width="100"/>
</Grid.ColumnDefinitions>
<ScrollViewer Name="MySV" Grid.Column="0" ....>
<Grid Name="DetailGrid"/>
</ScrollViewer>
<Grid Grid.Column="1" .........>
......Some Option Data....
</Grid>
</Grid>
</StockPanel>
アイデアは、方向フラグに応じて、ColumnDefinitions を RowDefinitions に、Grid.Column を Grid.Rows に変更することです。
フラグが "Horizontal" の場合、UserControl は "DetailsGrid" と "Option Data" グリッドを並べて表示します。つまり、"DetailGrid" は列 0 に、"Option Data" グリッドは列 1 に表示されます。
フラグが「垂直」の場合、UserControl は行 1 に「DetailGrid」を表示し、行 0 に「オプション データ」を表示します。
その問題について助けが必要です。
前もって感謝します。