0

TextBlock背景色を配置するために、グリッドなどのコンテナ内に配置する必要があります。これが xaml でどのように機能するかは知っていますが、ボタンがクリックさC# -> (xaml.cs)れるTextBlockたびに作成されます。SaveCloseしたがって、もともと作成されたものではありません。

        //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);

<Page.BottomAppBar>
    <AppBar>
        <StackPanel Orientation="Horizontal">
            <Button Name="SaveClose" Style="{StaticResource AppBarButtonStyle}" Content="&#x2714;" AutomationProperties.Name="Save and Close" Click="SaveClose_Click" />
            <Button Name="Delete" Style="{StaticResource AppBarButtonStyle}" Content="&#xE107;" AutomationProperties.Name="Delete Selected" Click="Delete_Click" />
        </StackPanel>    
    </AppBar>
</Page.BottomAppBar>

<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}" RenderTransformOrigin="0.515,0.505">
    <TextBox x:Name="Notepad" HorizontalAlignment="Left" Margin="10,10,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Height="748" Width="1366" FontSize="30" Visibility="Collapsed"/>
    <GridView x:Name="NoteGrid" HorizontalAlignment="Left" Margin="106,350,0,0" VerticalAlignment="Top" Width="363" Height="168">
        <Button x:Name="NewNote" Content="Create New Note" Height="150" Width="348" FontSize="40" Margin="0" Click="NewNote_Click"/>
    </GridView>
    <GridView x:Name="NoteOutGrid" HorizontalAlignment="Left" Margin="682,84,0,0" VerticalAlignment="Top" Width="674" Height="590"/>

すべての新規textBlock作成者に同じ背景を持たせたいのですが、どうすればよいですか? ありがとう

4

1 に答える 1

0

この場合、写真が役に立ちました。TextBlockをグリッドに追加する方法を知りたいと思っていると思います。

まず、CodeBehindで参照できるように、グリッドに名前を付ける必要があります。次に、TextBlockをGrids Children Collectionに追加するだけです(ここではgridNameの名前を使用しています)。

gridName.Children.Add(block);

グリッドに行と列がある場合は、添付のプロパティを使用してコントロールを適切な場所に割り当てる必要があります(rowIdとcolumnIdを使用して、コントロールが配置されるグリッドの行と列の番号を指定しています。

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

それを一緒に入れて:

MainWindow.Xaml.cs

namespace WpfApplication1
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    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

<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
   <Grid Name="gridName" Background="PaleGoldenrod" >
       <Grid.RowDefinitions>
           <RowDefinition Height="4*"/>
           <RowDefinition Height="*" />
       </Grid.RowDefinitions>
       <Button Content="Button" Height="23" Grid.Row="1" HorizontalAlignment="Center"   Name="button1" VerticalAlignment="Center" Width="75" Click="button1_Click" />
   </Grid>
</Window>

UserControlの使用例。

Note.xaml.cs

namespace WpfApplication1
{
   /// <summary>
   /// Interaction logic for Note.xaml
   /// </summary>
   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 x:Class="WpfApplication1.Note"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         mc:Ignorable="d" 
         d:DesignHeight="100" d:DesignWidth="250">
    <Grid Name="myGrid" >
        <Rectangle Stroke="Black" StrokeThickness="4"></Rectangle>
        <TextBlock Name="block" Margin="4"></TextBlock>
    </Grid>
</UserControl>

新しい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);
}
于 2012-12-28T08:01:58.060 に答える