我有一个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
转换器的角色,但也许不是?
将字段包装在某种容器中,例如 a 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>
在这种情况下,.ToString()
标签 (" System.Windows.Controls.Label
") 的表示形式显示为标题。
请注意,单个绑定可以正常工作:
<DataEditPane x:TypeArguments="MyType" x:Class="MyDataEditPane">
<DataEditPane.Header>
<Binding Path="BoundVariable1" />
</DataEditPane.Header>
</DataEditPane>
如果重要的话,我将 SyncfusionTabItemExt
用作继承层次结构中的超类之一,但由于该类不会覆盖该Header
属性,我认为这没有什么不同。
我究竟做错了什么?我知道我可以在 ViewModel 中创建另一个属性作为标题(然后单绑定),但我想学习如何在 XAML 中正确执行此操作。