次のサブクラスがあり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>
この場合、.ToString()
ラベル( " System.Windows.Controls.Label
")の表現がヘッダーとして表示されます。
単一のバインディングが問題なく機能することに注意してください。
<DataEditPane x:TypeArguments="MyType" x:Class="MyDataEditPane">
<DataEditPane.Header>
<Binding Path="BoundVariable1" />
</DataEditPane.Header>
</DataEditPane>
重要な場合は、継承階層のスーパークラスの1つとしてSyncfusionを使用してTabItemExt
いますが、そのクラスはHeader
プロパティをオーバーライドしないため、違いはないと思います。
私は何が間違っているのですか?ViewModelで別のプロパティを作成してヘッダーとして機能させる(そしてそれをシングルバインドする)ことができることは知っていますが、XAMLでこれを適切に行う方法を学びたいと思います。