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

在开始时,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 Name="testLV" Grid.Row="0" ItemTemplate="{StaticResource ResourceKey=dtKey}" >

        </ListView>

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

谢谢


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

为了满足您的要求,您需要将5列平分,只需使用UniformGrid 。 这几乎不关心任何上述的事情。

所以说这样的话:

<ListView Name="paragonLV" HorizontalContentAlignment="Stretch">
  <ListView.ItemContainerStyle>
    <Style TargetType="{x:Type ListViewItem}">
      <Setter Property="Padding"
              Value="0" />
      <Setter Property="BorderThickness"
              Value="0" />
    </Style>
  </ListView.ItemContainerStyle>
  <ListView.ItemTemplate>
    <DataTemplate>
      <UniformGrid MaxWidth="{Binding RelativeSource={RelativeSource FindAncestor,
                                                                      AncestorType={x:Type ScrollViewer}},
                                      Path=ActualWidth}"
                    Columns="5">
        <UniformGrid.Resources>
          <Style TargetType="{x:Type TextBlock}">
            <Setter Property="TextTrimming"
                    Value="CharacterEllipsis" />
            <Setter Property="FontSize"
                    Value="18" />
            <Setter Property="HorizontalAlignment"
                    Value="Stretch" />
          </Style>
        </UniformGrid.Resources>
        <TextBlock Text="{Binding barCode}" />
        <TextBlock Text="{Binding nazwa}" />
        <TextBlock Text="{Binding jm}" />
        <TextBlock Text="{Binding ilosc}" />
        <TextBlock Text="{Binding cena}" />
      </UniformGrid>
    </DataTemplate>
  </ListView.ItemTemplate>
</ListView>

使用Grid.Column定义格式化您的网格,或者使用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;
    }
链接地址: http://www.djcxy.com/p/44599.html

上一篇: Get control properties from Grid.Resources in code behind

下一篇: silverlight binding