2009-07-14 69 views
2

我的TextBox有一個自定義錯誤模板。類似這樣的:WPF:當孩子的ControlTemplate變化時調整父容器的大小

<Style TargetType="{x:Type TextBox}" x:Key="ErrorTemplateStyle"> 
    <Setter Property="Validation.ErrorTemplate"> 
     <Setter.Value> 
      <ControlTemplate> 
       <StackPanel Orientation="Vertical"> 
        <Border BorderBrush="Orange" BorderThickness="1"> 
         <AdornedElementPlaceholder /> 
        </Border> 
        <TextBlock Text="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors).CurrentItem}" /> 
       </StackPanel> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

我的文本框放在DataGrid的單元格內。現在,當發生錯誤時,我想要更改該單元格的大小以容納我的TextBox的新模板。任何想法如何實現這種行爲?

+0

您是否使用WpfToolking的DataGrid? – 2009-07-23 06:41:10

+0

是的,我使用WPF工具包中的一個 – aku 2009-07-24 02:46:58

回答

2

選項1:在保存所需單元格寬度的新類或現有類中創建一個屬性。 (確保類和屬性實現INotifyPropertyChanged。)將單元格的寬度綁定到該屬性。發生錯誤時更改屬性值,並且單元格應調整它的大小。

選項2:使用網格以外的東西(DockPanel,StackPanel等)。正確安排這些東西將允許容器自動調整大小以適應內容。

選項3:找出使用網格大小屬性的方法。設置寬度=「自動」通常允許列根據其內容來確定大小,但這可以取決於網格中的其他列。

相關問題