Wpf Binding与MultiBinding更新

时间:2014-09-22 00:53:42

标签: wpf

我遇到了一个已经解决的问题。

WPF binding HorizontalAlignment to TextAlignment

我有一个ListBoxItem,其Horizo​​ntalAlignment属性由Converter更改,根据Window的宽度。我在这个ListBoxItem中有一个TextBlock,其TextAlignment属性绑定到ListBoxItem的Horizo​​ntalAlignment属性。

首先,我使用了一个简单的绑定,它没有工作(ListBoxIten的Horizo​​ntalAlignment已更改,但TextAlignment未更新)。这是代码:

<ListBox>
    <ListBoxItem>
        <TextBlock TextWrapping="Wrap" Text="Some text" 
               TextAlignment="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ListBoxItem}, Path=HorizontalAlignment}"/>
    </ListBoxItem>
</ListBox>

之后,我使用了MultiBinding而不是Binding,传递了AcualWidth属性,转换器实际上没有使用它。现在,当ListBoxItem的Horizo​​ntalAlignment发生更改时,TextAlignment会更新。我使用了以下代码:

<TextBlock TextWrapping="Wrap" Text="Some text">
    <TextBlock.TextAlignment>
        <MultiBinding Converter="{StaticResource HorizontalToTextAlignmentConverter}">
            <Binding Path="ActualWidth" RelativeSource="{RelativeSource Self}"/>
            <Binding Path="HorizontalAlignment" RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBoxItem}}"/>
        </MultiBinding>
    </TextBlock.TextAlignment>
</TextBlock>

转换器本身是相同的,它只有一个未使用的变量(Window的ActualWidth)。所以,我的问题是:为什么TextAlignment仅使用MultiBinding更新?

0 个答案:

没有答案