首页 > 解决方案 > 类和文本的多重绑定 StringFormat

问题描述

我有一个 StackPanel,它看起来像:

<StackPanel Orientation="Horizontal">
        <TextBlock Text="{helpers:Localization PIV_HdrTblPtnId}" />
        <TextBlock Text="{Binding Path=(utils:NavigationVariables.Id)}" />
</StackPanel>

我正在尝试将其转换为单个 TextBlock,如下所示:

<TextBlock>
    <TextBlock.Text>
            <MultiBinding StringFormat="{}{0} {1}">
                    <Binding Path="{helpers:Localization PIV_HdrTblPtnId}"/>
                    <Binding Path="(utils:NavigationVariables.Id)"
                                UpdateSourceTrigger="PropertyChanged" />
            </MultiBinding>
    </TextBlock.Text>
</TextBlock>

但我收到以下错误:

不能在“绑定”类型的“路径”属性上设置“本地化”。

有没有办法解决这个问题?提前致谢!

编辑:本地化类:

public class LocalizationExtension : Binding
{
    #region Constructors

    public LocalizationExtension(string name) : base("[" + name + "]")
    {
        Mode = BindingMode.OneWay;
        Source = CultureManager.Instance;
    }

    #endregion
}

标签: c#wpfmultibinding

解决方案


具有两个 Runs 的 TextBlock 应该可以工作:

<TextBlock>
    <Run Text="{helpers:Localization PIV_HdrTblPtnId}"/>
    <Run Text="{Binding Path=(utils:NavigationVariables.Id), Mode=OneWay}" />
</TextBlock>

推荐阅读