Редактируемое свойство WPF User control - PullRequest
2 голосов
/ 31 марта 2012

Это мой UserControl созданный в Blend:

<StackPanel Orientation="Horizontal" Background="#FF0084FF" Height="400">
        <TextBlock TextWrapping="Wrap" Margin="10,0,20,0" Text="Kategorija1" FontFamily="Segoe Print" FontWeight="Bold" FontSize="26.667" RenderTransformOrigin="0.5,0.5" Foreground="White" TextAlignment="Center"  VerticalAlignment="Center">
            <TextBlock.RenderTransform>
                <TransformGroup>
                    <ScaleTransform/>
                    <SkewTransform/>
                    <RotateTransform Angle="-90"/>
                    <TranslateTransform/>
                </TransformGroup>
            </TextBlock.RenderTransform>
        </TextBlock>

Теперь я хочу, чтобы текстовое свойство TextBlock было редактируемым, чтобы я мог изменить его в коде c #.

Как это сделать?

Ответы [ 2 ]

4 голосов
/ 31 марта 2012

Просто дайте TextBlock имя, используя x: Name = "myTextBlock"

тогда в коде позади вы можете использовать myTextBlock.Text = "некоторый другой текст"

<StackPanel Orientation="Horizontal" Background="#FF0084FF" Height="400">
    <TextBlock x:Name = "myTextBlock" TextWrapping="Wrap" Margin="10,0,20,0" Text="Kategorija1" FontFamily="Segoe Print" FontWeight="Bold" FontSize="26.667" RenderTransformOrigin="0.5,0.5" Foreground="White" TextAlignment="Center"  VerticalAlignment="Center">
        <TextBlock.RenderTransform>
            <TransformGroup>
                <ScaleTransform/>
                <SkewTransform/>
                <RotateTransform Angle="-90"/>
                <TranslateTransform/>
            </TransformGroup>
        </TextBlock.RenderTransform>
    </TextBlock>
</StackPanel>

Если вам нужно изменить его вне класса, вы можете использовать x: FieldModifier, чтобы сделать его общедоступным, чтобы любой внешний класс мог его изменить.

<StackPanel Orientation="Horizontal" Background="#FF0084FF" Height="400">
    <TextBlock x:Name = "myTextBlock" x:FieldModifier="public" TextWrapping="Wrap" Margin="10,0,20,0" Text="Kategorija1" FontFamily="Segoe Print" FontWeight="Bold" FontSize="26.667" RenderTransformOrigin="0.5,0.5" Foreground="White" TextAlignment="Center"  VerticalAlignment="Center">
        <TextBlock.RenderTransform>
            <TransformGroup>
                <ScaleTransform/>
                <SkewTransform/>
                <RotateTransform Angle="-90"/>
                <TranslateTransform/>
            </TransformGroup>
        </TextBlock.RenderTransform>
    </TextBlock>
</StackPanel>
2 голосов
/ 31 марта 2012

Чтобы отредактировать TextBlock в коде, вам нужно дать ему имя, по которому вы сможете получить к нему доступ.

<TextBlock Name="_textBox" ...

Теперь в коде вы можете получить к нему доступ по имени _textBox

...