5

3 つのフィールドを持つオブジェクトを表示する DataTemplate があります。

Name = "Font Color"
Value = "Orange"
Editable = "True"

しかし、私はそれらを例えば次のように表示したい:

フォントの色: オレンジ 編集可能

しかし、ここでトリガーを使用する構文を見つけるのに苦労しています。たとえば、フィールド Editable="True" のときに「編集可能」を表示するために

これを行うための構文を知っている人はいますか?

次のコードは、「バインディングはプロパティで使用できません」という結果になります。

<DataTemplate x:Key="settingsItemTemplate">
    <StackPanel Orientation="Horizontal">
        <Label Content="{Binding XPath=Name}" ContentStringFormat=" {0}:"/>
        <Label Content="{Binding XPath=Value}"/>
        <Label>
            <Label.Triggers>
                <Trigger Property="{Binding XPath=Editable}" Value="True">
                    <Setter Property="Content" Value="Editable"/>
                </Trigger>
                <Trigger Property="{Binding XPath=Editable}" Value="False">
                    <Setter Property="Content" Value="NOT Editable"/>
                </Trigger>
            </Label.Triggers>
        </Label>
    </StackPanel>
</DataTemplate>
4

1 に答える 1

11

TextBlocka の代わりに aを使用しても機能しますLabelか? この場合、バインドできるプロパティがありますTextBlockText

本当に を使用したい場合はLabel、2 つの を作成する別の方法があります。1DataTemplateつは編集可能なケース用で、もう 1 つは編集不可の場合です。ContentTemplateその後、プロパティを適切なテンプレートにバインドできます。

更新:さらに調べたところ、その属性Triggerのバインディングをサポートしていないようです。Propertyただし、DataTriggerこれはサポートされていますか:

<StackPanel>
    <CheckBox Name="EditableCheckBox">Is Editable</CheckBox>
    <Label>
        <Label.Resources>
            <Style TargetType="{x:Type Label}">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding ElementName=EditableCheckBox, Path=IsChecked}" Value="True">
                        <Setter Property="Content" Value="Editable" />
                    </DataTrigger>
                    <DataTrigger Binding="{Binding ElementName=EditableCheckBox, Path=IsChecked}" Value="False">
                        <Setter Property="Content" Value="NOT Editable" />
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Label.Resources>
    </Label>
</StackPanel>

Binding別のコントロールの値を実行する代わりに、属性を変更して XML データ ソースにバインドできるはずです。

于 2009-02-11T12:34:15.447 に答える