사용자 정의 컨트롤을 사용하여 탭 막대를 만들었습니다. 탭 막대가 현재 페이지를 변경할 때 여러 페이지에 있어야하기 때문입니다. 즉, 탭 바는 올바른 이미지 뒤에 어두운 사각형을 이동하여 현재 표시된 페이지를 표시해야합니다. 그래서 SelectionIndex라는 사용자 정의 속성을 사용하여 올바른 이미지 뒤에 선택 사각형을 옮겨 보았습니다. 홈 이미지는 0이고 일정 이미지는 1입니다. 아래 코드는 선택된 이미지가 있어야하는 페이지에서 사용되는 탭 막대를 보여줍니다 두 번째 것.사용자 지정 속성의 리터럴 값이 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입니다.
저는이 문제를 인터넷 검색으로 해결했지만 다른 모든 사용자가 문제를 겪고있는 것처럼 보입니다. 속성에 값을 바인딩하는 경우 XAML에서 0-5 사이의 int로 속성을 설정할 수 있기를 원합니다.
TabBar 지정자 다음에 SelectionIndex 값이 설정된 것으로 보입니다. 스위치를 다른 장소로 옮기십시오. "로드 됨"(예 : –
) @AlekDepler 성공 했으므로 답변으로 게시하여 받아 들일 수 있습니까? 고마워요, –
@RossTinsley는 Loaded를 사용하지 않습니다. 처음 설정 한 후에 값이 변경되면 작동하지 않습니다. –