🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
.NET

.NETとは、主に.NET Frameworkと呼ばれるアプリケーションまたは開発環境を指します。CLR(共通言語ランタイム)を搭載し、入力された言語をCIL(共通中間言語)に変換・実行することが可能です。そのため、C#やPythonなど複数の言語を用いることができます。

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

1122閲覧

WPF XAMLの書き方について

super_hogehoge

総合スコア29

.NET

.NETとは、主に.NET Frameworkと呼ばれるアプリケーションまたは開発環境を指します。CLR(共通言語ランタイム)を搭載し、入力された言語をCIL(共通中間言語)に変換・実行することが可能です。そのため、C#やPythonなど複数の言語を用いることができます。

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クリップ

投稿2021/01/28 09:30

前提・実現したいこと

いつもお世話になっております
現在WPFを学んでおり手元で簡単なサンプルコードを作成し挙動を確かめています

ビルドが問題無くうまくいくXAMLと駄目なXAMLの違いが分かりません

発生している問題・エラーメッセージ

エラー CS0029 型 'System.Windows.Controls.ListBoxItem' を 'System.Windows.Controls.ListBox' に暗黙的に変換できません

該当のソースコード

■エラーになるXAML

cs

1<Window x:Class="WpfApp1.MainWindow" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 4 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 5 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 6 xmlns:local="clr-namespace:WpfApp1" 7 mc:Ignorable="d" 8 Title="MainWindow" Height="450" Width="800"> 9 <Grid> 10 <ListBox> 11 <ListBox.Name> 12 ComponentListBox 13 </ListBox.Name> 14 <ListBoxItem Content="項目1" /> 15 <ListBoxItem Content="項目2" /> 16 17 </ListBox> 18 </Grid> 19</Window> 20

■問題無いXAML

cs

1<Window x:Class="WpfApp1.MainWindow" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 4 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 5 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 6 xmlns:local="clr-namespace:WpfApp1" 7 mc:Ignorable="d" 8 Title="MainWindow" Height="450" Width="800"> 9 <Grid> 10 <ListBox> 11 <ListBoxItem Content="項目1" /> 12 <ListBoxItem Content="項目2" /> 13 <ListBox.Name> 14 ComponentListBox 15 </ListBox.Name> 16 </ListBox> 17 </Grid> 18</Window> 19

試したこと

要は

cs

1 <ListBox.Name> 2 ComponentListBox 3 </ListBox.Name>

の挿入場所によってなぜ結果が異なるのかが分かっていません
非常に簡単な問題だとは思うのですがどこを調べれば良いか分かっていない為ご教授いただけると
幸いです 宜しくお願い致します

補足情報(FW/ツールのバージョンなど)

.Net4.7 Windows10    VisualStudio2019環境です

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

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

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

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

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

m.ts10806

2021/01/28 09:37

.Netのドキュメントから分かることはなかったですか?
super_hogehoge

2021/01/28 11:03

すいません、実力不足の為上記の問題の解決になるようなことは読み取れませんでした
m.ts10806

2021/01/28 11:21

ひとまず。 「どこを見て」「何を試して」「どう理解したか」を質問本文に記載してください。
TN8001

2021/01/28 11:44

<ListBox.Name>a</ListBox.Name> この書き方(プロパティ要素構文)で、Nameを使った時点でおかしいですね。 <Button> <Button.Name>a</Button.Name> </Button> <TextBlock /> こんなのもダメでした。 [x:Name Directive - XAML | Microsoft Docs](https://docs.microsoft.com/en-us/dotnet/desktop/xaml-services/xname-directive#xname-and-name > Name can also be set using property element syntax with inner text, but that is uncommon. 一般的でない(普通は<ListBox Name="a">と書くし、<ListBox x:Name="a">とするほうが多い)とはいえ、使えると言っているのでなんかバグくさいですね^^;
Zuishin

2021/01/30 11:01

問題がないと言われている方も怪しげな警告を出しますね。
guest

回答1

0

なぜ結果が異なるのかが分かっていません

おそらく、コンパイラのバグです。
この場合、どちらも正常にはビルドできていません。ビルドできる方も、実際はComponentListBoxがnullのままです。

var w = ComponentListBox.Width; // NullException発生

@TN8001 さんも書いているように、以下のように書きましょう。

<ListBox Name="ComponentListBox"> <ListBoxItem Content="項目1" /> <ListBoxItem Content="項目2" /> </ListBox>

投稿2021/03/06 14:21

編集2021/03/07 06:00
soi013

総合スコア149

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

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

Zuishin

2021/03/06 14:29

TN8001 さんが追記修正依頼で引用されているように、ドキュメントされているので未定義ではなくバグでしょう。ビルド失敗は正しくない結果だと思います。
soi013

2021/03/07 05:58

たしかに、"uncommon"と書かれているだけで、未定義というわけではないですね。修正します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問