布団が俺を呼んでいる

丘山大一のぶろぐ

SDKの更新の影響で(?)UWPのプロジェクトとXAMLのプレビューが開けなくなった

直接の原因不明や解決策は不明。
現象としては複数ありますが、面倒なので一つのエントリにまとめますw

現象1:UWPアプリが開けなくなった

まず、VS2015をupdate2に上げました。
次に、使わなくなっていたVS2013関係をアンインストールしました。
上記二つを行った後、UWPのプロジェクトを開こうとすると、「SDKの更新が必要です」のようなメッセージが出るようになりました。
(どちらの操作がトリガーかは不明)
案内に従ってSDKを更新しましたが、開けるようにはなりませんでした。

現象1-対応:プロジェクトファイルの書き換え

プロジェクトファイルを直接メモ帳で開いてみると、「Version=10.0.10586.0」がターゲットになっているようでした。
ここを、「10.0.10240.0」に書き換えると、とりあえずビルドとデバッグは通るようにはなりました。

現象2:XAMLエディターのプレビューができなくなった

XAMLエディターを開くと、プレビューができなくなってしまっていました。
これは、以前作ったアプリでも、新規に作成したアプリでも同様。

現象2-対応:色々入れ直し

下記を順番に実行しました。
・VS2015をコンパネから「修復」 → 直らず
・Windows SDK の「修復」  → 直らず
・Windows SDK の「アンインストール」 → 直らず
・Windows SDK の再インストール → 直った!
結果的に、Windows SDK のアンインストール&インストールが正解だったような気がしますが、何分検証できていません。

その後

プロジェクトを開きなおすと、アプリケーションのターゲットバージョンが
・Windows10(10.0;ビルド10240)
・Windows10(10.0;ビルド10586)
の二つが選択できるようになっていました。
で、ためしに Windows10(10.0;ビルド10586) にして、保存してみると、VSが落ちました。
再度開くと、また上記現象1のような状態に……。
仕方ないので、またプロジェクトを直接修正して、10240に戻すと、開けます。

つまりこういう状況みたい

新規にプロジェクトを作成した段階で、10586を選択すると「プロジェクトはプラットフォームSDK(UAP.10.0.10586.0)が必要ですが、インストールされていません。」のエラーになってしまう。
どうやら、SDKのインストール自体が壊れてしまっているみたい。
VSのインストーラー、コンパネ、ダウンロードファイルいずれの修復・インストールでも直らないので、諦めることにしますw
次のバージョンでは直っているといいなあ……。



XAMLとC#によるUniversal Windows Platform アプリ開発

コメントを書く

布団が俺を呼んでいる

丘山大一のぶろぐ

XAML 多角形の中に文字を表示したい

多角形作って、中にTextBlock突っ込めばオッケー、簡単ですね。
あれ?

多角形(Polygon)の中にTextBlockは突っ込めないみたい

な、なんだってー。

というわけで

正解はTextBlock の裏に多角形を仕込むことみたいです。

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApplication1"
        xmlns:exshape="clr-namespace:Microsoft.Expression.Shapes;assembly=Microsoft.Expression.Drawing"
        xmlns:exctrl="clr-namespace:Microsoft.Expression.Controls;assembly=Microsoft.Expression.Drawing"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <TextBlock Text="12" FontSize="24"
           Width="50"
           Height="50"
           Padding="10,10,0,0">
            <TextBlock.Background>
                <VisualBrush>
                    <VisualBrush.Visual>
                        <exshape:RegularPolygon Width="50" Height="50" Stroke="Black" PointCount="5"  Opacity="0.25" />
                    </VisualBrush.Visual>
                </VisualBrush>
            </TextBlock.Background>
        </TextBlock>
    </Grid>
</Window>

ポイントは TextBlock の Padding 。
これで文字位置を微調整する必要があります。

うーん、イマイチ

多角形の中に文字列が存在する のではなく、
文字列の裏側に多角形が存在する というのは、直観に反しているのでなんかイヤ。
もっといい方法ないかなあ……。

あと、もしかして……

UWPってRegularPolygonを呼び出せない……??

Windows 10ユニバーサルアプリ開発【Windows 10 Mobile対応】 ThinkIT Books

コメントを書く