質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
UWP

UWPは、Universal Windows Platformの略。様々なデバイス向けに提供されているアプリケーションを共通のフレームワーク上で動作可能にする仕組みで、Windows10で導入されました。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

XAML

XAML(Extensible Application Markup Language)はWPF、Silverlight、Windows PhoneそしてWindows Store appsでユーザーインターフェースを定義するために使われるXML言語です。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

1回答

4473閲覧

UWPで他のクラスからTextBlockを変更・生成したい

ZinGai

総合スコア7

UWP

UWPは、Universal Windows Platformの略。様々なデバイス向けに提供されているアプリケーションを共通のフレームワーク上で動作可能にする仕組みで、Windows10で導入されました。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

XAML

XAML(Extensible Application Markup Language)はWPF、Silverlight、Windows PhoneそしてWindows Store appsでユーザーインターフェースを定義するために使われるXML言語です。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

0グッド

0クリップ

投稿2018/03/28 15:46

初めての質問です。C#, Xaml, UWP共に初心者ですので、基本的なことについても解説があると助かります。

Visual Studio 2017 Communityで開発を行っています。
UWPで、MainPage.xamlに、コードビハインドである> MainPage.xaml.cs以外のクラスから
TextBlockを作成し、出力したいと思っています。

以下は、ボタンをクリックすると、TextBlock.Textにメッセージを出力するというプログラムです。
現在はTextBlockのUI定義がMainPage.xamlに書かれており、ボタンが押されると文字を表示する処理を、MainPage.xaml.csに書いています。

MainPage.xaml

XAML

1 <Button x:Name="button" Content="Button" HorizontalAlignment="Left" Margin="38,66,0,0" VerticalAlignment="Top" Height="102" Width="173" Click="button_Click"/> 2<TextBlock x:Name="textBlock" HorizontalAlignment="Left" Height="108" Margin="174,220,0,0" Text="TextBlock" TextWrapping="Wrap" VerticalAlignment="Top" Width="324"/>

MainPage.xaml.cs

C#

1private void button_Click(object sender, RoutedEventArgs e) 2{ 3 this.textBlock.Text = "表示したい文字"; 4}

このプログラムのTextBlockに関する部分を、別のクラスWriteText.cs に記述し、処理を分けたいと思っています。
イメージとしては、MainPage.xamlにはUI定義はボタンしかなく、ボタンをクリックすると、WriteText.csクラスのメソッドが呼び出され、TextBlockの生成とTextBlock.Textの出力を行いたいです。

MainPage.xaml.cs

c#

1private void button_Click(object sender, RoutedEventArgs e) 2{ 3 WriteText wt = new WriteText(); 4 wt.Write(); // TextBlockの作成と出力 5}

WriteText.cs

C#

1 2public class WriteText { 3 public void Write() { 4 // MainPage.xaml上にTextBlockを配置 5 6 // 配置したTextBlock.Textの編集 7 textBlock.Text = "表示したい文字"; 8 } 9 10} 11

TextBlockをほかのクラスから生成したり、変更するためにはどうすればよいでしょうか?
(生成が難しいのであれば、TextBlockのUI定義はxamlに記載して、TextBlock.Textだけを他のクラスから変更する方法でも構いません)

有識者の皆様にご教授頂けると幸いです。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2018/03/28 15:52

できますが普通しません。XAML は固定しておいてデータをバインドすることで外観を変えます。TextBlock を複数生成するのであれば、ListBox などの ItemsSource を使います。
ZinGai

2018/03/28 16:07

本内容を応用することで、別のことをやろうと試みています。そのため、本内容を行う方法が知りたいです。
Zuishin

2018/03/28 16:26

何をやろうとしているのかがわかった方が方向がわかりやすいです。サッカー初心者がボールを手で掴む方法を聞いてきたら奇異に思うでしょう?
guest

回答1

0

ベストアンサー

なんかめんどくさそうなんで行きがかり上答えだけ教えときます。

Panel.Children プロパティ

投稿2018/03/28 16:46

Zuishin

総合スコア28656

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ZinGai

2018/03/29 00:44

回答ありがとうございます。 Panel.Childrenプロパティを使用することで、子要素にボタンなどを追加できることは分かったのですが、MainPage.xamlとリンクさせる方法がわからないです。 どのようにして、WriteText.csから、MainPage.xaml上に明示的に表示させることができるのでしょうか? 以下のクラスをMainPage.xaml.csからただ呼び出す方法では、もちろんできませんでした。 > ```C# public class WriteText { public void Write() { StackPanel stackPanel = new StackPanel(); Button mybutton = new Button { Content = "press me" }; stackPanel.Children.Add(mybutton); } } ```
Zuishin

2018/03/29 01:19

StackPanel() のインスタンスを捨てているからです。 どっちに向かって走っているのかわからないので質問があるならまず方向性を示してください。 何がしたいのかわかりません。 その方法は普通使わないと書いたはずです。
Zuishin

2018/03/29 01:21

問われたことに時間をかけて答えつづけた挙句、「やりたいことはもっと簡単にできることがわかりました」と言われるとがっくり来ます。
ZinGai

2018/03/29 13:05

ありがとうございます。 何とか、教えていただいたプロパティを使用して、やりたいことができました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問