2013-11-28 58 views
0

是否有可能将属性与没有设置程序绑定到WPF中的DataTrigger?我都像预计下面的代码和属性的getter不叫:DataTrigger绑定到只读属性

<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(并且正确更新)吗?

+0

是的,这段代码没有问题, 唯一可能的是你可能忘了在某个时刻在该属性上提高PropertyChanged事件 事件,因为你没有一个setter人经常忘记提起那个事件“By手“,当需要通知(如您的DataTrigger) –

回答

1

它的可能性。为什么不?

它在绑定的源端只有一个getter就很好。绑定的目标必须是依赖属性,但源可以是任何东西。

如果您希望更改被正确触发,那么一旦Connection.IsLoggedIn被更改,您将必须触发属性名称为IsLoggedIn的PropertyChanged。

+0

是的,这就是我所要做的。我猜,今天只是其中的一个。感谢你的回答。 –