繁体   English   中英

多绑定WPF

[英]Multibinding WPF

我根据画布的位置在画布上排列了几个文本块。 下面的底部提供了示例代码段。 为此,我需要在ItemContainerStyle内访问每个文本块的Actualwidth和Actual Height。 我正在努力按元素名称访问其以下属性,因为它没有名称。 怎么做? 我需要通过模板来做吗?

<MultiBinding Converter="{StaticResource BPositionConverter}" ConverterParameter="Left">                            
     <Binding ElementName="TextBlock" Path="ActualHeight" />  <---Problem
     <Binding ElementName="TextBlock"  Path="ActualWidth" />  <---Problem
</MultiBinding>

-完整片段

<ItemsControl ItemsSource="{Binding Locations}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <Canvas />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
        <DataTemplate DataType="Point">
            <TextBlock Text="{Binding}" Width="40" Height="20" />
        </DataTemplate>
    </ItemsControl.ItemTemplate>
    <ItemsControl.ItemContainerStyle>  
        <Style TargetType="ContentPresenter">  
            <Setter Property="Canvas.Left">
                <Setter.Value>
                    <MultiBinding Converter="{StaticResource BPositionConverter}" ConverterParameter="Left">                            
                        <Binding ElementName="TextBlock" Path="ActualHeight" />  <---Problem
                        <Binding ElementName="TextBlock"  Path="ActualWidth" />  <---Problem
                    </MultiBinding>
                </Setter.Value>
            </Setter>
        </Style>
    </ItemsControl.ItemContainerStyle>
</ItemsControl>

由于您的数据模板仅包含一个文本元素,因此您可以引用self来获取相同的实际宽度和高度

所以删除ElementName并应用RelativeSource,应该可以解决这个问题

<Style TargetType="ContentPresenter">
    <Setter Property="Canvas.Left">
        <Setter.Value>
            <MultiBinding Converter="{StaticResource BPositionConverter}"
                          ConverterParameter="Left">
                <Binding Path="ActualHeight"
                         RelativeSource="{RelativeSource Self}" />
                <Binding Path="ActualWidth"
                         RelativeSource="{RelativeSource Self}" />
            </MultiBinding>
        </Setter.Value>
    </Setter>
</Style>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM