一部のストーリーボードにイベント トリガーを使用する。
また、ストーリーボードのない TextBlock に Opacity を割り当てる必要があります。
トリガーに基づいて値を直接割り当てるにはどうすればよいですか?
<Expander.Triggers>
<EventTrigger RoutedEvent="Expander.Expanded">
Expanded イベントでこれを実行しようとしましたが、うまくいきませんでした。
一部のストーリーボードにイベント トリガーを使用する。
また、ストーリーボードのない TextBlock に Opacity を割り当てる必要があります。
トリガーに基づいて値を直接割り当てるにはどうすればよいですか?
<Expander.Triggers>
<EventTrigger RoutedEvent="Expander.Expanded">
Expanded イベントでこれを実行しようとしましたが、うまくいきませんでした。
の小さな例を次に示しDataTemplate
ます。2つあるGrid
ものがあります。1 つはエキスパンダーの内部にあり、もう 1 つは - にはありません。プロパティ==の場合、で特定の操作を行います。Expander
TextBlocks
InnerTextBlock
OuterTextBlock
IsExpanded
True
DataTriggers
XAML
<Window.Resources>
<DataTemplate DataType="{x:Type local:MyExpanderData}">
<Grid x:Name="MainGrid">
<Expander Name="MyExpander" Header="{Binding HeaderName}" IsExpanded="{Binding isExpanded}">
<TextBlock Name="InnerTextBlock" Text="InnerTextBlock" Width="150" Height="30" VerticalAlignment="Top" FontSize="16" />
</Expander>
<TextBlock Name="OuterTextBlock" Text="OuterTextBlock" Width="150" Height="30" Margin="0,30,0,0" FontSize="16" />
</Grid>
<!-- Our DataTriggers -->
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding ElementName=MyExpander, Path=IsExpanded}" Value="True">
<Setter TargetName="OuterTextBlock" Property="Opacity" Value="0.5" />
</DataTrigger>
<DataTrigger Binding="{Binding ElementName=MyExpander, Path=IsExpanded}" Value="True">
<Setter TargetName="InnerTextBlock" Property="Foreground" Value="Red" />
</DataTrigger>
<DataTrigger Binding="{Binding ElementName=MyExpander, Path=IsExpanded}" Value="True">
<Setter TargetName="MyExpander" Property="Header" Value="Expander open" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
<!-- Resource data for the Expander -->
<local:MyExpanderData x:Key="MyExpanderData" HeaderName="Test Expander" isExpanded="True" />
</Window.Resources>
<Grid>
<!-- Our DataTemplate in ContentControl -->
<ContentControl Name="MyContentControl" Content="{StaticResource MyExpanderData}" />
</Grid>
Code behind
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
}
public class MyExpanderData
{
private bool expanded = false;
private string headerName = "";
public bool isExpanded
{
get
{
return expanded;
}
set
{
expanded = value;
}
}
public string HeaderName
{
get
{
return headerName;
}
set
{
headerName = value;
}
}
}
クラスにMyExpanderData
格納されたデータはBinding
、DataTemplate
. すべてのプロパティは に保存され、DataTemplate
このクラスを介して設定できます。