【问题标题】:WPF, Data Template widthWPF,数据模板宽度
【发布时间】:2010-12-07 11:35:59
【问题描述】:

我有一个数据模板格式化列表框中的项目

<DataTemplate x:Key="ChildViewModelTemplate">
    <Border BorderBrush="#FFDC1C1C" BorderThickness="1" >
        <Grid>
            <TextBlock Text="{Binding Path=DisplayName}"></TextBlock>
            <Image Height="Auto" Margin="0,0,2,0" VerticalAlignment="Stretch" HorizontalAlignment="Right" Width="31" Source="pack://siteoforigin:,,,/rocket.ico"/>
        </Grid>
    </Border>                
</DataTemplate>

这会在每个项目周围设置一个边框,该边框延伸到 TextBlock 绑定中绑定的文本字符串的长度。

有没有一种简单的方法让所有元素都具有相同的宽度,其中宽度等于最长的元素?对于加分,我想知道是否有办法为最长的可见元素和/或最长的元素执行此操作,无论它是否可见。

谢谢

【问题讨论】:

    标签: wpf datatemplate


    【解决方案1】:

    【讨论】:

      【解决方案2】:

      跟进 Botz3000 的回答。 SharedSizeGroup 是去这里的方式。这样就可以了

      <ListBox ...
               Grid.IsSharedSizeScope="True">
          <ListBox.ItemTemplate>
              <DataTemplate>
                  <Grid>
                      <Grid.ColumnDefinitions>
                          <ColumnDefinition Width="Auto" SharedSizeGroup="Col1"/>
                      </Grid.ColumnDefinitions>
                      <Border BorderBrush="#FFDC1C1C" BorderThickness="1" >
                          <Grid>
                              <TextBlock Text="{Binding Path=DisplayName}"></TextBlock>
                              <Image Height="Auto" Margin="0,0,2,0" VerticalAlignment="Stretch" HorizontalAlignment="Right" Width="31" Source="C:\C1.png"/>
                          </Grid>
                      </Border>
                  </Grid>
              </DataTemplate>
          </ListBox.ItemTemplate>
      </ListBox>
      

      【讨论】:

      • 太棒了!到目前为止,这就是我对 WPF 的喜爱,我觉得没有什么我能想出设计师还没有想到的,并提供了解决方案。该教程非常棒,也让我对 RelativeSource 有了一些了解,我打算接下来看看 :)
      猜你喜欢
      • 1970-01-01
      • 2010-09-13
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多