从代码中的Grid.Resources获取控件属性

时间:2013-07-04 09:08:51

标签: wpf resources datatemplate

在开始时,theres xaml代码:

<Grid.Resources>
            <DataTemplate x:Name="dataTemp" x:Key="dtKey">
                <WrapPanel Orientation="Horizontal" Name="mainWP">
                    <TextBlock Name="codeTB" FontSize="18" Width="200" Text="{Binding barcode}"></TextBlock>
(...)
               </WrapPanel>
            </DataTemplate>
        </Grid.Resources>

和listview with datatemplate:

<ListView Name="testLV" Grid.Row="0" ItemTemplate="{StaticResource ResourceKey=dtKey}" >

        </ListView>

所以在后面的代码中,我想将TextBlock的宽度更改为this.width / 5(因为另一台PC的宽度可能不同),但由于它是DataTemplate,我无法访问此控件。 我也试过Width =“{Binding Path = ActualWidth,ElementName = grid0}”,但作为实际宽度,我需要像ActualWidth / 5这样的东西,它不起作用

由于

2 个答案:

答案 0 :(得分:1)

当满足所有子元素Grid时,使用包含5列且每个Width="0.2*"的{​​{1}}将正常工作(换句话说,当网格的大小足够大时)适合所有具有相同空间的列)。如果它不能这样做,布局的工作方式是修剪它可以的元素,并为需要它的其他列提供额外的空间,从而覆盖过程中的DesiredWidth

对于您希望将5列平均分割的要求,只需使用Width="0.2*"即可。这几乎不关心任何上述事情。

所以说:

UniformGrid

答案 1 :(得分:0)

使用Grid.Columndefination格式化您的网格或以其他方式使用Ivaluconverter类让我们看看值转换器开发

转换参数将是你的计算参数, 你知道如何构建价值转换器类

 public object Convert(object value, Type targetType, 
        object parameter, CultureInfo culture)
    {
        //value is grid actual width 
       // parameter = 5 is your calculated value

           return value / parameter;
    }
相关问题