Настройка ControlTemplate в коде [WPF] - PullRequest
0 голосов
/ 05 января 2011

Как я могу установить объект Grid с некоторыми элементами пользовательского интерфейса в ControlTemplate?Я пытаюсь использовать этот код, но я не понимаю, как установить объект Grid в объект FrameworkElementFactory.Спасибо

    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;

Мне это нужно для замены моего стиля, спроектированного xaml в коде:

<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>

Я должен это сделать, потому что я хочу изменить путь привязки для текстового поля во время выполнения из кода,Вы знаете другие способы?Спасибо.

1 Ответ

2 голосов
/ 06 января 2011

Вот решение:

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

Спасибо всем.

...