DataTrigger绑定到get-only属性

时间:2013-11-28 18:15:40

标签: c# wpf xaml data-binding properties

是否可以将没有setter的属性绑定到WPF中的DataTrigger?我有以下代码,并且未按预期调用属性的getter:

<TextBlock>
    <TextBlock.Style>
        <Style TargetType="{x:Type TextBlock}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding IsLoggedIn}" Value="True">
                    <Setter Property="Text" Value="Connected" />
                    <Setter Property="Foreground" Value="Green" />
                </DataTrigger>
                <DataTrigger Binding="{Binding IsLoggedIn}" Value="False">
                    <Setter Property="Text" Value="Disconnected" />
                    <Setter Property="Foreground" Value="Black" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBlock.Style>
</TextBlock>

public bool IsLoggedIn
{
    get { return Connection.IsLoggedIn; }
}

INPC正确实现(虽然我认为在这种情况下实际上并不重要)并且具有setter的属性表现正常。可以将此属性绑定到DataTrigger(并使其正确更新),因为它现在可以吗?

1 个答案:

答案 0 :(得分:1)

它可能。为什么不呢?

在绑定的源端只有一个吸气剂就可以了。绑定的目标必须是依赖属性,但源可以是任何东西。

如果您希望正确触发更改,一旦Connection.IsLoggedIn发生更改,您将不得不使用属性名称IsLoggedIn触发PropertyChanged。