2011-05-19 78 views
0

我正在努力控制模板。我目前正在構建一個具有幾個窗格的UI,這些窗格基本上是由更基本的控件構建而成的。如何訪問並向WPF模板中的控件提供默認值?

這裏是如何我們建設窗格中的一個看起來像現在:

<Grid> 

    <StackPanel> 

     <ContentControl Template="{StaticResource ConstructionBorderCtrl}"> 
      <ContentControl Template="{StaticResource StringCtrl}" Content="Cash Event Value:"/> 
     </ContentControl> 

     <ContentControl Template="{StaticResource ConstructionBorderCtrl}"> 
      <ContentControl Template="{StaticResource RateCtrl}"></ContentControl> 
     </ContentControl> 

     <ContentControl Template="{StaticResource ConstructionBorderCtrl}"> 
      <ContentControl Grid.Row="0" Template="{StaticResource FromCtrl}"></ContentControl> 
     </ContentControl> 

     <ContentControl Template="{StaticResource ConstructionBorderCtrl}"> 
      <ContentControl Grid.Row="0" Template="{StaticResource StartEndDateCtrl}"></ContentControl> 
     </ContentControl> 

     <ContentControl Template="{StaticResource ConstructionBorderCtrl}"> 
      <ContentControl Grid.Row="0" Template="{StaticResource ComboStringCtrl}">Applicable Size:</ContentControl> 
     </ContentControl> 

    </StackPanel> 

</Grid> 

下面是該StringCtrl作爲示例模板:

<ControlTemplate x:Key="StringCtrl" TargetType="ContentControl"> 

    <Grid Margin="5"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="auto" /> 
      <ColumnDefinition Width="*" /> 
     </Grid.ColumnDefinitions> 
     <TextBlock Name="ctrlText" Margin="0,0,5,0" Text="{TemplateBinding Content}"></TextBlock> 
     <TextBox Name="ctrlDefaultValue" Grid.Column="1" /> 
    </Grid> 
</ControlTemplate> 

你可以從模板看到它真的只是一個標籤和一個文本框。現在讓我們假設我想爲文本框提供一個默認值,並對用戶輸入進行驗證,但我想從父級構造窗格中提供該上下文,並將其綁定到模板內的各個元素。我會怎麼做呢?

+0

覺得我喜歡你走錯路。爲什麼你使用這個模板?如果你想創建一個模塊化設計,只需使用UserControls。 – 2011-05-19 01:47:25

回答

1

這絕對是我以前從未見過的設計。我認爲UserControls或其他類型的自定義控件比ControlTemplate方法更適合這種工作。

但是,如果您一定要走這條路線,我可能會看到一個行爲爲您工作,如果您的結構/模板的命名具有一定的一致性 - 您可以設置屬性的行爲和行爲可以訪問通過其AssociatedObject屬性進行控制,以便能夠設置孩子的值並進行驗證。

雖然對我來說似乎很多工作。

+0

這是一個糟糕的設計,所以我們切換到使用普通的usercontrols。感謝輸入的傢伙! – Steve 2011-05-23 06:28:54

相關問題