Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.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
C# 如何基于变量更改动态设置按钮内容_C#_Wpf - Fatal编程技术网

C# 如何基于变量更改动态设置按钮内容

C# 如何基于变量更改动态设置按钮内容,c#,wpf,C#,Wpf,我创建了一个UserControl,它有一对按钮,像这样的X | X 它们的用途类似于方向按钮、左/右、上/下、+/-等,无论应用程序需要什么。当用户更改程序中的设置时,其上的文本会动态变化 我想做的是根据按钮的设置,它会改变按钮的内容。有时是文字,有时是图片,我认为最好的。现在我只有两个字符串变量保存按钮的文本,它们被绑定到buttons内容属性 例如,当我将文本设置为“左”以在按钮中显示箭头而不是左箭头的漂亮图片时,我需要它。但是当我将文本设置为+,它只使用普通文本来显示+ 如何根据不断变化

我创建了一个UserControl,它有一对按钮,像这样的X | X 它们的用途类似于方向按钮、左/右、上/下、+/-等,无论应用程序需要什么。当用户更改程序中的设置时,其上的文本会动态变化

我想做的是根据按钮的设置,它会改变按钮的内容。有时是文字,有时是图片,我认为最好的。现在我只有两个字符串变量保存按钮的文本,它们被绑定到buttons内容属性

例如,当我将文本设置为“左”以在按钮中显示箭头而不是左箭头的漂亮图片时,我需要它。但是当我将文本设置为+,它只使用普通文本来显示+

如何根据不断变化的文本变量甚至枚举动态更改这些按钮的内容

提前感谢您的帮助

编辑 我知道如何通过使用样式和ContentTemplate触发器的触发器来实现这一点。也许有一种方法可以检查变量的值

<ControlTemplate TargetType="{x:Type Button}">
    <Grid>
        <Image Name="normal" Source="{DynamicResource Normal}" Stretch="Fill"/>
        <Image Name="pressed" Source="{DynamicResource Pressed}" Stretch="Fill" Visibility="Hidden"/>
        <Image Name="disabled" Source="{DynamicResource Disabled}" Stretch="Fill" Visibility="Hidden"/>
        <TextBlock Name="text" Text="{TemplateBinding Content}" VerticalAlignment="Center" HorizontalAlignment="Center" />
    </Grid>
    <ControlTemplate.Triggers>
        <Trigger Property="IsPressed" Value="True">
            <Setter TargetName="normal" Property="Visibility" Value="Hidden"/>
            <Setter TargetName="pressed" Property="Visibility" Value="Visible"/>
            <Setter TargetName="text" Property="Text" Value="Pressed :)"/>
        </Trigger>
        <Trigger Property="IsEnabled" Value="False">
            <Setter TargetName="normal" Property="Visibility" Value="Hidden"/>
            <Setter TargetName="disabled" Property="Visibility" Value="Visible"/>
            <Setter TargetName="text" Property="Text" Value="Disabled :("/>
        </Trigger>
    </ControlTemplate.Triggers>
</ControlTemplate>

你应该使用触发器

<Button>
    <Button.Style>
        <Style TargetType="Button">
            <Style.Triggers>
                <DataTrigger Binding="{Binding SomeProperty}" Value="{x:Static n:YourEnum.Value}">
                    <Setter Property="Content">
                       <Setter.Value>
                              <!-- add the content you want to see in this case -->
                              <Image Source="…" />
                       </Setter.Value>
                    </Setter>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Button.Style>
</Button>