2011-01-05 13 views
0

Wie kann ich Grid-Objekt mit einigen UI-Elementen in ControlTemplate setzen? Ich versuche diesen Code zu verwenden, aber ich verstehe nicht, wie man das Grid-Objekt auf das FrameworkElementFactory-Objekt setzt. DankSetzen von ControlTemplate in Code [WPF]

ControlTemplate CellControlTemplate = new ControlTemplate(); // my control template 
    Grid CellGrid = new Grid(); // my grid (I want add it to my control template 
    FrameworkElementFactory root = new FrameworkElementFactory(typeof(Grid)); 
// ??? 
    CellControlTemplate.VisualTree = root; 

Ich brauche es für meine XAML gestalteten Stil in Code zu ersetzen hinter:

<Style TargetType="{x:Type igDP:CellValuePresenter}" x:Key="PStyle"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type igDP:CellValuePresenter}"> 
        <Grid Margin="4"> 
         <Grid.RowDefinitions> 
          <RowDefinition /> 
         </Grid.RowDefinitions> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition /> 
          <ColumnDefinition Width="Auto"/> 
          <ColumnDefinition Width="Auto"/> 
         </Grid.ColumnDefinitions> 
         <TextBlock Grid.Row="0" Grid.RowSpan="2" Grid.Column="0" 
              FontWeight="DemiBold" 
              FontSize="18" 
              VerticalAlignment="Center" 
              Text="{Binding Path=DataItem.DINAMIC_COLUMN}"/> 
        </Grid> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

ich es tun muss, weil ich für Textbox Bindungspfad ändern von Code zur Laufzeit soll. Kennst du andere Wege? Vielen Dank.

+0

Was genau wollen Sie damit erreichen? Auch Grids arent-Steuerelemente, sie speichern nur Steuerelemente, ich denke, Sie möchten möglicherweise ein DataTemplate auf eine Listbox statt – Machinarius

+0

Ich habe einen Stil. Dieser Stil enthält Kontrollschablonen. Ich habe einige Steuerelemente, und ich möchte es zu dieser Steuerelementvorlage hinzufügen. Ich setze diese Kontrollen in Gitter und versuche, dieses Gitter auf meine Kontrollschablone zu setzen. – Dmitriy

Antwort

2

Hier Lösung:

var grid = new FrameworkElementFactory(typeof(Grid)); 
// assign template to grid 
CellControlTemplate.VisualTree = grid; 
// define grid's rows 
var r = new FrameworkElementFactory(typeof(RowDefinition)); 
grid.AppendChild(r); 
// define grid's columns 
var c = new FrameworkElementFactory(typeof(ColumnDefinition)); 
grid.AppendChild(c); 
//... etc 

Dank alle.

Verwandte Themen