現在のページを変更するときにタブバーを複数のページに配置する必要があるため、ユーザーコントロールを使用してタブバーを作成しました。これは、正しい画像の後ろに暗い矩形を移動して、現在表示されているページをタブバーに表示する必要があることを意味します。そこで、SelectionIndexというカスタムプロパティを使用して、正しいイメージの背後に選択矩形を移動しようとしました.0はホームイメージ、1はスケジュールイメージなどです。下のコードは、選択したイメージが表示されるページで使用されているタブバーを示しています2番目のもの。カスタムプロパティのリテラル値がnullです
<Grid>
<local:TabBar SelectionIndex="1" Margin="0,0,1222,0"/>
</Grid>
以下のコードはpropdp
によって生成されたと私はSelectionIndexにプロパティの名前を変更しました。次に、Switch-Caseを使用して、プロパティの値が何であるかを確認し、矩形イメージの余白を変更して移動させます。
public partial class TabBar : UserControl
{
public int SelectionIndex
{
get { return (int)GetValue(SelectionIndexProperty); }
set { SetValue(SelectionIndexProperty, value); }
}
// Using a DependencyProperty as the backing store for SelectionIndex. This enables animation, styling, binding, etc...
public static readonly DependencyProperty SelectionIndexProperty =
DependencyProperty.Register("SelectionIndex", typeof(int), typeof(TabBar), new PropertyMetadata(0));
public TabBar()
{
InitializeComponent();
switch (SelectionIndex)
{
case 0:
SelectionBox.Margin = new Thickness(0, 10, 0, 0);
break;
case 1:
SelectionBox.Margin = new Thickness(0, 123, 0, 0);
break;
}
}
}
しかし、私はそれが0だったが、これを自分で解決しようとする試みで1 をする必要があり、SelectionIndexの値をチェックするためにswitch (SelectionIndex)
にブレークポイントを入れて、私はから文字列にプロパティのタイプを変更しましたint、これは、SelectionIndexが "0"ではないことを示しています、それはnullです。
私はこの問題をGoogledしていますが、他の誰かが問題を抱えているようです。プロパティに値をバインドして、XAMLで0〜5の整数にプロパティを設定できます。
TabBarコンストラクターの後にSelectionIndex値が設定されているようです。スイッチを別の場所に移動しようとすると、「ロードされました」たとえば –
@AlekDeplerうまくいきました。答えとして投稿して受け入れることができますか?ありがとう、 –
@RossTinsleyはLoadedを使用しません。値が最初に設定された後に値が変更されても機能しません。 –