wpf多点线在Syncfusion tabitemext标头中失败



我有一个TabItem的子类,如下所示,我试图设置Header属性。我已经使用MultiBinding尝试了一下:

<DataEditPane x:TypeArguments="MyType" x:Class="MyDataEditPane">
    <DataEditPane.Header>
        <MultiBinding StringFormat="Hello world {0} {1}">
            <Binding Path="BoundVariable1" />
            <Binding Path="BoundVariable2" />
        </MultiBinding>    
    </DataEditPane.Header>
</DataEditPane>

但是它失败了:

System.Windows.Data Error: 28 : MultiBinding failed because it has no valid Converter. MultiBindingExpression:target element is 'MyDataEditPane' (Name=''); target property is 'Header' (type 'Object')
System.Windows.Data Error: 28 : MultiBinding failed because it has no valid Converter. MultiBindingExpression:target element is 'MyDataEditPane' (Name=''); target property is 'Header' (type 'Object')

我一直认为StringFormat扮演了转换器的角色,但也许不是?

用某种容器(例如Label)将字段包装在一起,似乎也没有用:

<DataEditPane x:TypeArguments="MyType" x:Class="MyDataEditPane">
    <DataEditPane.Header>
        <Label>
            <Label.Text>
                <MultiBinding StringFormat="Hello world {0} {1}">
                    <Binding Path="BoundVariable1" />
                    <Binding Path="BoundVariable2" />
                </MultiBinding>    
            </Label.Text>
        </Label>
    </DataEditPane.Header>
</DataEditPane>

在这种情况下,标签(" System.Windows.Controls.Label")的.ToString()表示为标题。

请注意,单个绑定工作正常:

<DataEditPane x:TypeArguments="MyType" x:Class="MyDataEditPane">
    <DataEditPane.Header>
        <Binding Path="BoundVariable1" />
    </DataEditPane.Header>
</DataEditPane>

如果重要的话,我正在使用Syncfusion TabItemExt作为继承层次结构中的我的超类之一,但是由于该类并没有覆盖Header属性,所以我认为这不会有所不同。

我在做什么错?我知道我可以在ViewModel中创建另一个属性,以充当标题(然后是单个结合),但我想学习如何在XAML中正确执行此操作。

尝试文本块而不是标签。以下代码对我有效。

我尝试了:

<Window x:Class="ListBox.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:ListBox" Title="Window1" Height="300" Width="300">
    <Window.DataContext>
        <local:TextVM/>
    </Window.DataContext>
    <StackPanel>
        <TextBox Text="{Binding Text1}"  />
        <TextBox Text="{Binding Text2}" />
        <TextBlock>
            <TextBlock.Text>
                <MultiBinding StringFormat="Hello World {0} - {1}">
                    <Binding Path="Text1" />
                    <Binding Path="Text2" />
                </MultiBinding>
            </TextBlock.Text>
        </TextBlock>
    </StackPanel>
</Window>

我想知道StringFormat是否仅在预期字符串而不是对象的情况下有效。

MSDN上有一个示例:http://msdn.microsoft.com/en-us/library/system.windows.data.data.bindingbase.stringbase.stringformat.aspx

多绑定器需要一个转换器,我认为您可以使用的转换器是StringFormatConverter,它是IMultiValueConverter,因此适用于多键。也许您应该适应您的情况。

希望这对您有用...

相关内容

  • 没有找到相关文章

最新更新