WPF Border DesiredHeight

votos
9

O seguinte exemplo de código Microsoft contém o seguinte:

<Grid>
...     
  <Border Name=Content ... >
...     
  </Border>
</Grid>
<ControlTemplate.Triggers>
  <Trigger Property=IsExpanded Value=True>
     <Setter TargetName=ContentRow Property=Height
             Value={Binding ElementName=Content,Path=DesiredHeight} />
  </Trigger>
...
</ControlTemplate.Triggers>

Quando executado, no entanto, este código gera o seguinte erro de ligação de dados:

System.Windows.Data Error: 39 : BindingExpression path error: 'DesiredHeight' property not found on 'object' ''Border' (Name='Content')'. BindingExpression:Path=DesiredHeight; DataItem='Border' (Name='Content'); target element is 'RowDefinition' (HashCode=2034711); target property is 'Height' (type 'GridLength')

Apesar deste erro, o código funciona corretamente. Eu olhei através da documentação e DesiredHeightnão parece ser um membro de Border. Alguém pode explicar de onde DesiredHeighté que vem? Além disso, existe alguma maneira de resolver / suprimir este erro por isso a minha saída do programa é limpo?

Publicado 19/05/2009 em 17:29
fonte usuário
Em outras línguas...                            


7 respostas

votos
8

Você pode ver que a propriedade na parte do código de sua aplicação

Editar:

Border content = new Border();
int desiredHeight = content.DesiredSize.Height;
int desiredWidth = content.DesiredSize.Width;

Para resolver o problema tentar ligação para o atributo Height, desde DesiredHeight não parece estar disponível na marcação XAML do controlo fronteiriço.

Respondeu 19/05/2009 em 17:41
fonte usuário

votos
4

Eu corri para este. Ao longo das linhas do que user275587 disse, seu exemplo funciona porque o gatilho remove o ALTURA = "0" no RowDefination.

Então eu mudar a lógica configuração de altura / gatilho, para que o RowDefination tem nenhum conjunto Altura

<Grid.RowDefinitions>
     <RowDefinition Height="Auto"/>
     <RowDefinition Name="ContentRow" />
</Grid.RowDefinitions>
...
<ControlTemplate.Triggers>
     <Trigger Property="IsExpanded" Value="False">
             <Setter TargetName="ContentRow" Property="Height" Value="0" />
     </Trigger>
</ControlTemplate.Triggers>
Respondeu 29/09/2010 em 00:38
fonte usuário

votos
2

Tive o mesmo problema. Estava usando um personalizado Expanderem um costume ComboBox. Nenhuma das opções acima funcionou para mim, a ligação a Heightquebrou a funcionalidade da Expander, usando um StackPaneltambém quebrou a exibição dos itens em cada grupo. Eu encontrei:

<Setter TargetName="ContentRow" Property="Height" Value="Auto"/>
Respondeu 05/05/2013 em 13:20
fonte usuário

votos
2

Tente.

<Setter
    TargetName="content"
    Property="Height"
    Value="{Binding ElementName=content, Path=DesiredHeight}"
/>
<Setter TargetName="content" Property="Height" Value="NaN"/>

Ligação é desnecessária.

Respondeu 25/04/2012 em 12:10
fonte usuário

votos
2

Mesmo problema, mas a solução aceita por Carlo não funciona perfeitamente. O problema que o cartaz estava enfrentando vai embora, mas o Expander parcialmente breaks-

se você tem algum conteúdo que precisa para expandir em um expansor já expandida, ele não vai fazê-lo com a ligação para DesiredSize.Height , você precisa DesiredHeight - pode ser devido a uma razão dada por user275587.

Respondeu 18/11/2011 em 13:25
fonte usuário

votos
2

Eu vim sobre o mesmo problema no meu aplicativo. No final, eu mudei o código para que eu alternado a visibilidade do conteúdo entre Collapsede Visible, e substituiu o Gridcom um StackPanel.

Eu geralmente encontrada a qualidade das amostras modelo de controle MS para ser muito bom, mas o erro com este foi um pouco frustrante.

Respondeu 14/07/2009 em 18:58
fonte usuário

votos
1

DesiredHeight vem do elemento de conteúdo e é uma ligação válida. Penso que a razão a sua ligação não resolver é porque DesiredHeight depende de propriedade de altura e você não tiver definido uma altura fixa em seu modelo para que ele avalia a Double.NaN

Respondeu 28/05/2010 em 05:23
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more