1

一部のストーリーボードにイベント トリガーを使用する。
また、ストーリーボードのない TextBlock に Opacity を割り当てる必要があります。
トリガーに基づいて値を直接割り当てるにはどうすればよいですか?

<Expander.Triggers>
   <EventTrigger RoutedEvent="Expander.Expanded">

Expanded イベントでこれを実行しようとしましたが、うまくいきませんでした。

4

1 に答える 1

1

の小さな例を次に示しDataTemplateます。2つあるGridものがあります。1 つはエキスパンダーの内部にあり、もう 1 つは - にはありません。プロパティ==の場合、で特定の操作を行います。ExpanderTextBlocksInnerTextBlockOuterTextBlockIsExpandedTrueDataTriggers

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格納されたデータはBindingDataTemplate. すべてのプロパティは に保存され、DataTemplateこのクラスを介して設定できます。

于 2013-07-08T19:44:13.323 に答える