Как добавить текстовый блок в контейнер, чтобы добавить цвет фона

I am needing to put TextBlock inside a container e.g. a Grid In order to put a background color. I know how this works in xaml but in C# -> (xaml.cs) a TextBlock is made every time the SaveClose button is clicked. Therefore one is not originally created.

        //In text editing mode.
        if (Notepad.Visibility == Visibility.Visible)
        {
            TextBlock block = new TextBlock();
            block.Width = 250;
            block.Height = 100;
            block.Text = Notepad.Text;
            block.Foreground = new SolidColorBrush(Colors.Blue);


    
        
            <button Name="SaveClose" Style="{StaticResource AppBarButtonStyle}" Content="✔" AutomationProperties.Name="Save and Close" Click="SaveClose_Click" />
            <button Name="Delete" Style="{StaticResource AppBarButtonStyle}" Content="" AutomationProperties.Name="Delete Selected" Click="Delete_Click" />
            
    



    
    
        <button x:Name="NewNote" Content="Create New Note" Height="150" Width="348" FontSize="40" Margin="0" Click="NewNote_Click"/>
    
    

Я хочу, чтобы каждый новый textBlock был создан для того же фона, как мне это сделать? благодаря

0
добавлено отредактировано
Просмотры: 1
Я подозреваю, что повторное создание текстового поля не является передовой идеей. Но в любом случае вы не указали, где вы поместите вновь созданное текстовое поле
добавлено автор Felice Pollano, источник
Можете ли вы также показать свой код xaml? и где будет размещен текстовый блок?
добавлено автор Amitd, источник
поэтому вы просто хотите установить цвет фона TextBlock?
добавлено автор sa_ddam213, источник
@SandundunEtc Я просто дал вам пример того, как добавить текстовый блок в грид, посмотрите, работает ли он для вас.
добавлено автор Mark Hall, источник
Каково имя элемента управления контейнера, который вы хотите добавить TextBlock в
добавлено автор Mark Hall, источник
Спасибо, Марк, я попробую приспособить его к моему и посмотреть, работает ли он
добавлено автор Sandundun Etc, источник
Я думал использовать Grid. Но я не уверен, как добавить элемент управления контейнера в этот экземпляр. Так что его нет, и я не думал о имени.
добавлено автор Sandundun Etc, источник
Я не могу добавить снимок экрана, но это приложение для заметок, а текстовые блоки - это представление заметок, которые пользователь сохранил, нажав кнопку на панели приложений. Все текстовые блоки создаются внутри Grid-ps. извините, я новичок. потерпите меня.
добавлено автор Sandundun Etc, источник

1 ответы

В этом случае картина помогла бы. Я предполагаю, что вы хотите знать, как добавить TextBlock в Grid.

Прежде всего, вам нужно будет присвоить вашей сетке имя, поэтому в CodeBehind можно ссылаться. Затем просто добавьте TextBlock в коллекцию Grids Children. (Я использую здесь имя gridName).

gridName.Children.Add(block);

если ваша сетка имеет строки столбцов, вам нужно будет использовать прикрепленные свойства, чтобы назначить ваш элемент управления в нужное место. (Я использую rowId и columnId для обозначения номера строки и столбца сетки, которую ставит элемент управления.

Grid.SetColumn(block, columnId);
Grid.SetRow(block, rowId);

Объединяя это:

<�Сильный> MainWindow.xaml.cs

namespace WpfApplication1
{
    /// 
/// Interaction logic for MainWindow.xaml ///
 
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            TextBlock block = new TextBlock();
            block.Width = 250;
            block.Height = 100;
            block.Text = "Hello World";//Notepad.Text;
            block.Foreground = new SolidColorBrush(Colors.Blue);
            gridName.Children.Add(block);
            Grid.SetColumn(block, 0);  /Not neccesary since not multiple columns
            Grid.SetRow(block, 0);
        }
    }
}

<�Сильный> MainWindow.xaml


   
       
           
           
       
       <button Content="Button" Height="23" Grid.Row="1" HorizontalAlignment="Center"   Name="button1" VerticalAlignment="Center" Width="75" Click="button1_Click" />
   

Пример использования UserControl.

<�Сильный> Note.xaml.cs

namespace WpfApplication1
{
   /// 
/// Interaction logic for Note.xaml ///
 
   public partial class Note : UserControl
   {
       public Note()
       {
           InitializeComponent();
       }

       public string Text
       {
           get { return block.Text; }
           set { block.Text = value; }
       }

       public new Brush Foreground
       {
           get { return block.Foreground; }
           set { block.Foreground = value; }
       }

       public new Brush Background
       {
           get { return myGrid.Background; }
           set { myGrid.Background = value; }
       }
   }

}

<�Сильный> Note.xaml


    
        
        
    

Модифицированное событие нажатия кнопки с использованием нового UserControl

private void button1_Click(object sender, RoutedEventArgs e)
{
    Note block = new Note() { Text = "Hello World", 
                              Foreground = new SolidColorBrush(Colors.Blue),
                              Background = new SolidColorBrush(Colors.PeachPuff),
                              Height=100, Width=250 };
    gridName.Children.Add(block);
    Grid.SetColumn(block, 0);
    Grid.SetRow(block, 0);
}
0
добавлено
@SandundunEtc приветствуются
добавлено автор Mark Hall, источник
@SandundunEtc только что обновил UserControl, поиграл с ним и посмотрел, можете ли вы заставить его работать на вас.
добавлено автор Mark Hall, источник
Я просто добавил пример usercontrol с Rectangle для рамки и TextBlock внутри, это похоже на то, что вы ищете. Я добавлю еще пару свойств за несколько минут
добавлено автор Mark Hall, источник
@SandundunEtc Я был прав, TextBlock - легкий, чтобы содержать элементы управления или фигуры. Вероятно, вам будет лучше смотреть на UserControl или RichTextBox.
добавлено автор Mark Hall, источник
@SandundunEtc Я могу быть преждевременным с этим заявлением, я верю, что вы положили его в абзац или запустите, вы можете это сделать.
добавлено автор Mark Hall, источник
@SandundunEtc Нет, вы не сможете добавить прямоугольник в текстовый блок, это элемент управления, предназначенный для хранения потока. Вот почему я спрашивал, каким будет элемент управления содержимым, если в Grid вы можете добавить несколько объектов. Используя Canvas, вы можете позиционировать их с помощью свойств Top и Left Attached
добавлено автор Mark Hall, источник
Да, большое спасибо, это то, что я искал. Важным элементом было добавление цвета фона. Поскольку текстовый блок добавлен в сетку, можно ли добавить объект, такой как прямоугольник внутри этого текстового блока?
добавлено автор Sandundun Etc, источник
Понимаю. Если бы я хотел, чтобы каждый созданный текстовый блок имел цвет фона, а также прямоугольник внутри него. Мне нужен совершенно другой подход?
добавлено автор Sandundun Etc, источник
ОК. Мне очень жаль, но не могли бы вы объяснить, как я буду использовать его в этом случае?
добавлено автор Sandundun Etc, источник
Спасибо за помощь. Я расскажу вам, как это происходит.
добавлено автор Sandundun Etc, источник