Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8895

Avalonia on LinuxのGUIで文字列が表示されない

$
0
0

Avalonia on Linux

LinuxでWPFが書けるAvaloniaを使ってみたところいきなり躓いたのでメモ。
dotnet coreはバージョン2.1および3.0、Avaloniaはバージョン0.8.3を使用していた。

事象

文字列を表示するコントロール(TextBox、TextBlock、Button……)で文字が表示されない。
これはプロパティに直接記述しようとBindingしようと変わらない。

なおウィンドウのタイトルバーには文字列が正常に表示されている。

<!--これをビルドして動かしても画面に文字が表示されない-->
<TextBox Text="Hello"/>

<!--こちらでも表示されない-->
<TextBox Text="{Binding Path=Message}"/>

簡単に再現するには(avaloniaのテンプレートをインストールした状態で)

$ dotnet new avalonia.mvvm --name TestApp
$ cd TestApp
$ dotnet run

すればテンプレートで生成されたコードのなかに

MainWindow.xaml
<TextBlock Text="{Binding Greeting}" HorizontalAlignment="Center" VerticalAlignment="Center"/>

があるためそこで発生する。

犯人

ロケールが原因らしい。

対策

実行するときなら

$ LANG=C dotnet TestApp.dll

でデフォルトロケールで実行すればよい。

おそらくLinuxでAvaloniaを使って開発するならVisual Studio Codeを使うひとが多数だと思うが、その場合開発中はlaunch.jsonに

launch.json
"configurations":[{//略"env":{"LANG":"C"}}]

といった感じでenvの指定を入れておけばデバッグ時にLANG=Cを渡して起動してくれる。

 Avaloniaのアナウンス

ロードマップによるとやはりVersion 0.8.3時点ではCJKサポートはまだ弱かったらしい。しかし0.9 releaseで大幅強化が目指されているようなので期待していたい。


Viewing all articles
Browse latest Browse all 8895

Trending Articles