###前提・実現したいこと
お世話になります。
C#のWPFにて、TabControlの切り替えによりStackPanelの表示を切り替える処理を行っております。
###発生している問題・エラーメッセージ
現在、下記のコードで、tab1選択時にはStackPanelのPnl1を、tab2選択時にはStackPanelのPnl2を表示しようと考えております。
しかし、常に両方のStackPanelが表示されてしまい、切り替えができません。
しかし、切り替えはDataTriggerにてStackVisibleクラスのstk1Visualプロパティの値がTrueの時にPnl1を表示、Falseの時にはPnl1を非表示にする処理を設定しており、Pnl2についてもstk2Visualプロパティにて同様の設定を行っております。
なお、TabItemsの中にStackPanelを入れることはできません。
よろしくお願いいたします。
###該当のソースコード
(MainWindow.xaml)
<Window x:Class="TabTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:TabTest"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<local:StackVisible x:Key="stackVisible"/>
</Window><Style x:Key="style1" TargetType="StackPanel"> <Style.Triggers> <DataTrigger Binding="{Binding stk1visual}" Value="True"> <Setter Property="Visibility" Value="Visible"/> </DataTrigger> <DataTrigger Binding="{Binding stk1visual}" Value="False"> <Setter Property="Visibility" Value="Collapsed"/> </DataTrigger> </Style.Triggers> </Style> <Style x:Key="style2" TargetType="StackPanel"> <Style.Triggers> <DataTrigger Binding="{Binding stk2visual}" Value="True"> <Setter Property="Visibility" Value="Visible"/> </DataTrigger> <DataTrigger Binding="{Binding stk2visual}" Value="False"> <Setter Property="Visibility" Value="Collapsed"/> </DataTrigger> </Style.Triggers> </Style> </Window.Resources> <StackPanel> <StackPanel> <TabControl Name="maintab"> <TabItem Header="Tab1" Height="30" Width="50" Name="tab1" DataContext="{StaticResource stackVisible}" IsSelected="{Binding stk1visual}"> </TabItem> <TabItem Header="Tab2" Height="30" Width="50" Name="tab2" DataContext="{StaticResource stackVisible}" IsSelected="{Binding stk2visual}"> </TabItem> </TabControl> </StackPanel> <StackPanel Name="Pnl1" Style="{StaticResource style1}"> <Label Content="Label1"/> </StackPanel> <StackPanel Name="Pnl2" Style="{StaticResource style2}"> <Label Content="Label2"/> </StackPanel> </StackPanel>
(MainWindow.xaml.cs)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace TabTest
{
/// <summary>
/// MainWindow.xaml の相互作用ロジック
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
}
public class StackVisible { public bool stk1visual { get; set; } public bool stk2visual { get; set; } }
}
###試したこと
TabItemをRadioButtonにかえて、IsCheckedプロパティにて行ったが、結果は変わらなかった。
###補足情報(言語/FW/ツール等のバージョンなど)
開発環境:Visual C# 2015 Community
Windows 8 64bit
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/09/19 14:42