繁体   English   中英

如何获取ListBox项目高度

[英]How to get ListBox Item height

这里我有一个ListBox

 <ListBox Name="listbox1"   ItemsSource="{Binding Area}" Grid.Column="0" Grid.Row="0"  HorizontalContentAlignment="Stretch">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Border BorderBrush="Green" BorderThickness="2" Margin="5" >
                        <Grid>
                            <Grid.RowDefinitions>
                                <RowDefinition Height="1*"/>
                                <RowDefinition Height="1*"/>
                                <RowDefinition Height="2*"/>
                            </Grid.RowDefinitions>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="2*" />
                                <ColumnDefinition Width="8*" />
                            </Grid.ColumnDefinitions>
                            <DockPanel  Grid.Row="0" Grid.Column="0" Margin="2">
                                <TextBox PreviewTextInput="minMaxPreviewInput" IsReadOnly="{Binding AutoChange}" Text="{Binding MinIntValue, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Width="30" DockPanel.Dock="Right" TextAlignment="Right"/>
                                <TextBlock Text="Minimum Value" DockPanel.Dock="Left"/>
                            </DockPanel>
                            <DockPanel  Grid.Row="1" Grid.Column="0" Margin="2">
                                <TextBox PreviewTextInput="minMaxPreviewInput" IsReadOnly="{Binding AutoChange}" Text="{Binding MaxIntValue, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Width="30" DockPanel.Dock="Right" TextAlignment="Right"/>
                                <TextBlock Text="Maximum Value" DockPanel.Dock="Left"/>
                            </DockPanel>
                            <DockPanel  Grid.Row="2" Grid.Column="0" Margin="2">
                                <TextBlock Text="{Binding AreaName}" FontSize="20" DockPanel.Dock="Left"/>
                                <TextBlock Text=":" FontSize="20" DockPanel.Dock="Left"/>
                                <TextBlock Text="{Binding Start}" FontSize="20" DockPanel.Dock="Left"/>
                                <CheckBox FlowDirection="RightToLeft" DockPanel.Dock="Right" IsChecked="{Binding AutoChange, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
                                    <TextBlock FlowDirection="LeftToRight" Text="Auto-Change:" />
                                </CheckBox>

                            </DockPanel>
                            <Border BorderBrush="Blue" BorderThickness="1" Grid.Column="1" Grid.RowSpan="3" Margin="5">
                                <Canvas Name="canvas1" >
                                    <Canvas.LayoutTransform>
                                        <ScaleTransform ScaleX="1" ScaleY="-1" CenterX=".5" CenterY=".5" />
                                    </Canvas.LayoutTransform>
                                    <Polyline Points="{Binding SegmentPoints}" Stroke="Black"    StrokeThickness="1"/>
                                </Canvas>
                            </Border>
                        </Grid>
                    </Border>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

一切正常。 我在访问“ Canvas大小时遇到​​问题。 我该如何访问? Listbox.ActualHeightListBox.ActualWidth大于Canvas ,我需要获取Canvas的确切大小。

我在这里先向您的帮助表示感谢。

当您尝试将其他绑定值的值基于Canvas大小时,请在对您的ViewModel的某些属性的ActualWidthActualHeight Binding上使用OneWayToSource模式。

这会将值从控件推入ViewModel从而允许您调整SegmentPoints的值,以便根据“ Canvas大小正确缩放它们。

暂无
暂无

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

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