Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 更改模板_Wpf_Templates - Fatal编程技术网

Wpf 更改模板

Wpf 更改模板,wpf,templates,Wpf,Templates,我有一个togglebutton,我想在选中和未选中状态下使用两个不同的模板 单击ToggleButton(IsChecked=True)时,我想使用模板1,第二次单击时,我想使用模板2 就这样 我该怎么做??我应该使用事件触发器还是触发器?您可以通过样式指定模板,而不是直接指定给元素,从而更改元素上的模板。在我们的风格中,我们可以指定当ToggleButton的IsChecked属性设置为True/False时触发的触发器,然后在该触发器中我们可以更改指定的模板。切换按钮的示例样式如下所示:

我有一个togglebutton,我想在选中和未选中状态下使用两个不同的模板

单击ToggleButton(IsChecked=True)时,我想使用模板1,第二次单击时,我想使用模板2

就这样


我该怎么做??我应该使用事件触发器还是触发器?

您可以通过样式指定模板,而不是直接指定给元素,从而更改元素上的模板。在我们的风格中,我们可以指定当ToggleButton的IsChecked属性设置为True/False时触发的触发器,然后在该触发器中我们可以更改指定的模板。切换按钮的示例样式如下所示:

<ToggleButton Content="Toggle Me">
    <ToggleButton.Style>
        <Style TargetType="{x:Type ToggleButton}">
            <Setter Property="Template"
                    Value="{StaticResource ToggleButtonUncheckedTemplate}" />
            <Style.Triggers>
                <Trigger Property="IsChecked"
                         Value="True">
                    <Setter Property="Template"
                            Value="{StaticResource ToggleButtonCheckedTemplate}" />
                </Trigger>
            </Style.Triggers>
        </Style>
    </ToggleButton.Style>
</ToggleButton>

这两个StaticResource是我们预定义的ControlTemplates。虽然这样做有效,但我建议只在模板内部进行所需的修改,而不是将ControlTemplate完全替换为另一个模板

就像我们在样式中所做的那样,我们可以在ControlTemplate中创建一个触发器来更改所需的内容:

        <ControlTemplate x:Key="ToggleButtonUncheckedTemplate"
                         TargetType="{x:Type ToggleButton}">
            <Grid SnapsToDevicePixels="False"
                  Background="Transparent">
                ... layout ...
            </Grid>

            <ControlTemplate.Triggers>
                <Trigger Property="IsChecked"
                         Value="true">
                    <Setter Property="Data"
                            TargetName="arrow"
                            Value="M 1,4  L 4,1  L 7,4" />
                </Trigger>
                <Trigger Property="IsMouseOver"
                         Value="true">
                    <Setter Property="Stroke"
                            TargetName="circle"
                            Value="#666" />
                    <Setter Property="Stroke"
                            TargetName="arrow"
                            Value="#222" />
                    <Setter Property="Visibility"
                            TargetName="shadow"
                            Value="Visible" />
                </Trigger>
            </ControlTemplate.Triggers>

        </ControlTemplate>

... 布局。。。