C# と xaml を使用して UWP デスクトップ アプリを作成しています。
ユーザー入力 (ボタンを押す) に応じて、FlipView の項目テンプレートの一部である2 つのテキスト ブロック ( TextBlock1とTextBlock2としましょう) の可視性を変更する必要があります。
ボタンが初めて押された場合、 TextBlock1が表示され、TextBlock2が非表示 (または折りたたまれている)
ボタンを 2 回押すと、 TextBlock1が折りたたまれ、TextBlock2が表示されます。
次に、「サイクル」が繰り返され、最初から実行されます(コードを参照)
項目ソースはクラスのリストですList<SourceClass> SourceClassList
ソース クラスには、タイプが Visibility である 2 つのメンバーがあります (1 つのメンバーは TextBlock1 にバインドされ、2 番目のメンバーは TextBlock2 にバインドされます)。
Pageクラスでは、私が説明したように、各メンバーの変更の可視性が機能しています
しかし、変更はページから移動して戻ってきた場合にのみ表示されますが、前述のように動的に変更したい
OneWay と TwoWay のバインド モードを試しましたが、どれも機能しません。
MainPage.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;
}
}
SourceClass.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:バインディングは一般的に期待どおりに機能します
お時間をいただきありがとうございます:)