Pergunta

Estou tentando definir um DataTemplate para um objeto de negócios no meu aplicativo WPF uma coleção de que está sendo ligado a uma caixa de listagem.

<UserControl.Resources>
    <DataTemplate x:Key="ResizedItemsDataTemplate" DataType="{x:Type resizer:ResizeMonitorItem}">
              <Border x:Name="bdr" BorderBrush="Blue" 
                                     BorderThickness="1" 
                                     CornerRadius="2" 
                                     Width="auto"
                                     HorizontalAlignment="Stretch"
                                     VerticalAlignment="Stretch">
                    <Grid Margin="2">
                        <Grid.RowDefinitions>
                            <RowDefinition Height="14"></RowDefinition>
                            <RowDefinition Height="14"></RowDefinition>
                        </Grid.RowDefinitions>


                        <TextBlock Grid.Row="0" Text="{Binding SaveAsFileName}"></TextBlock>
                        <TextBlock Grid.Row="1" Text="{Binding ResizedImageFilePath}"></TextBlock>
                    </Grid>
             </Border>
    </DataTemplate>
</UserControl.Resources>
<Grid VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="0">    
    <Border BorderThickness="0,0,0,5" BorderBrush="DarkGray" >
        <ListBox x:Name="ListBoxResizeItems" ItemsSource="{Binding Path=ResizeItems}" BorderThickness="0" ItemTemplate="{DynamicResource ResizedItemsDataTemplate}">
        </ListBox>
    </Border>
</Grid>

Como posso obter o limite definido com x: Name = BDR para abranger toda a largura de cada item caixa de listagem? No momento só abrange o com os TextBlocks dentro dele que não faça preenchimento neccessary a largura total da listboxitem e também variam para cada listboxitem.

Foi útil?

Solução

Este é provavelmente mais a ver com os ListBoxItems si não ocupando toda a largura da caixa de listagem. Adicione o atributo HorizontalContentAlignment="Stretch" ao seu ListBox e ver se ele estica os itens individuais para preencher a largura.

Outras dicas

trabalhado para fora. O truque consiste em definir o HorizontalContentAlignment = "Stretch" na sua caixa de listagem para fazer seu conteúdo esticar a largura, em vez de ajustar o conteúdo somente.

 <ListBox x:Name="ListBoxResizeItems" 
                HorizontalContentAlignment="Stretch"
                ItemsSource="{Binding Path=ResizeItems}" 
                BorderThickness="0"                                         
                ItemTemplate="{DynamicResource ResizedItemsDataTemplate}" >
        </ListBox>

Desculpe Matt, só tenho a sua resposta para obtener como eu estava escrevendo este post.

HorizontalContentAlignment é um agradável, solução limpa em comparação com o que eu estava tentando. Obrigado!

Aqui está o que quase funcionou, mas, por vezes, fez uma caixa de diálogo de animação em si mais e mais sempre:

Width="{Binding ActualWidth, 
        RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBox}}}"
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top