相关疑难解决方法(0)

数据触发器中的标记扩展

要翻译我的WPF应用程序,我使用Markup扩展,它返回一个Binding对象.这允许我在应用程序运行时切换语言.我像这样使用这个Markup:

<TextBlock Text="{t:Translate 'My String'}" />"
Run Code Online (Sandbox Code Playgroud)

我想通过数据触发器更改按钮文本:

<Button>
    <Button.Style>
        <Style TargetType="{x:Type Button}">
            <Setter Property="Template">
                <Setter.Value>
                    <!-- Custom control template, note the TextBlock formating -->
                    <ControlTemplate TargetType="{x:Type Button}">
                        <Grid x:Name="ContentHolder">
                            <ContentPresenter TextBlock.Foreground="Red" TextBlock.FontWeight="Bold" />
                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
            <!-- Custom text triggered by Data Binding... -->
            <Style.Triggers>
                <DataTrigger Binding="{Binding MessageRowButton}" Value="Retry">
                    <Setter Property="Button.Content" Value="{t:Translate Test}" />
                </DataTrigger>
                <DataTrigger Binding="{Binding MessageRowButton}" Value="Acknowledge">
                    <Setter Property="Button.Content" Value="{t:Translate Test}" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Button.Style>
</Button>
Run Code Online (Sandbox Code Playgroud)

这导致以下异常:

无法在"Setter"类型的"Value"属性上设置"绑定".'绑定'只能在DependencyObject的DependencyProperty上设置.

好的,这对我来说很有意义.我试图在我的资源中定义TextBlock并{StaticResource MyResource}在DataTrigger的Setter Value中使用.但是当我这样做时,我的Button的样式没有正确应用......

如何使用我的标记扩展并更改按钮上的文本而不会破坏在按钮内设置字符串样式的能力?

wpf xaml datatrigger markup-extensions

4
推荐指数
1
解决办法
2059
查看次数

标签 统计

datatrigger ×1

markup-extensions ×1

wpf ×1

xaml ×1