我正在使用 c# 和 xaml 制作 UWP 桌面应用程序。
我需要根据用户输入(按下按钮)更改作为 FlipView 项目模板一部分的两个文本块(比如说TextBlock1和TextBlock2 )的可见性。
如果第一次按下按钮时TextBlock1可见并且TextBlock2被隐藏(或折叠)
现在,如果第二次按下按钮,TextBlock1将被折叠并且TextBlock2将可见。
然后“循环”重复,它从头开始(见代码)
项目来源是类列表List<SourceClass> SourceClassList
源类有两个成员,类型为 Visibility(一个成员绑定到 TextBlock1,第二个绑定到 TextBlock2)
在 Page 类中,正如我所描述的,每个成员更改的工作可见性
但是只有当我离开页面然后返回时才能看到更改,但正如我提到的,我希望它动态更改
我正在尝试绑定模式的 OneWay 和 TwoWay,但它们都不起作用
主页.xaml
<FlipView x:Name="Cards" ItemsSource="{x:Bind SourceClassList, Mode=TwoWay}">
<FlipView.ItemTemplate>
<DataTemplate x:DataType="data:SourceClass" >
<StackPanel>
<TextBlock x:Name="TextBlock1" Text="{x:Bind FrontSideOfCard }" Visibility="{x:Bind visibilityOfFrontSide }" />
<TextBlock x:Name="TextBlock2" Text="{x:Bind BackSideOfCard}" Visibility="{x:Bind visibilityOfBackSide}"/>
</StackPanel>
</DataTemplate>
</FlipView.ItemTemplate>
<StackPanel/>
</FlipView>
MainPage.xaml.cs
public List<SourceClass> SourceClassList;
public MainPage()
{
IsTextBlock1Visible = false;
SourceClassList = //here is import from previous class which is not important for the problem
this.InitializeComponent();
}
private void Flip_Click(object sender, RoutedEventArgs e)
{
if (IsTextBlock1Visible == false)
{
SourceClassList[cards.SelectedItem].visibilityOfBackSide = Visibility.Visible;
SourceClassList[cards.SelectedItem].visibilityOfFrontSide = Visibility.Collapsed;
IsTextBlock1Visibl = true;
}
else
{
SourceClassList[cards.SelectedItem].visibilityOfBackSide = Visibility.Collapsed;
SourceClassList[cards.SelectedItem].visibilityOfFrontSide = Visibility.Visible;
IsTextBlock1Visibl = false;
}
}
源类.cs
public string TextBlock1 { get; set; }
public string TextBlock2 { get; set; }
public Visibility visibilityOfFrontSide { get; set; }
public Visibility visibilityOfBackSide { get; set; }
public SourceClass(string txt1, string txt2)
{
TextBlock1 = txt1;
TextBlock2 = txt2;
visibilityOfBackSide = Visibility.Collapsed;
visibilityOfFrontSide = Visibility.Visible;
}
PS:一般的绑定按预期工作
感谢您的时间 :)