none
ストアアプリ開発 SolidColorBrushでのカラープロパティの設定について RRS feed

  • 質問

  • 開発環境

    • OS:windows 8.1
    • 使用製品:Visual Studio 2013
    • 言語:C#/Xaml
    • 使用プロジェクト:ストアアプリ/空のアプリケーション

    お世話になってます。

    動的配置したコントロールCanvasの背景色を配置したときに設定する際にColorプロパティを使用しようとしたところ、インテリセンスからColorプロパティが出現しないため設定ができず困っています。

    こちらのコードではColorsプロパティの設定ができたのですが

            public MainPage()
            {
                this.InitializeComponent();
                cv1.Background = new SolidColorBrush(Colors.White);
            }
        <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
            <Canvas x:Name="hoge" HorizontalAlignment="Left" Height="381" VerticalAlignment="Top" Width="427"/>
    
        </Grid>

    以下の方法からでは設定ができませんでした。

    デザインからCanvasを設置した後にアプリ起動時にCanvasの色を変更することはできたのですが、Canvasを動的に配置した後に色の設定をしようとするとColorsプロパティが出現しませんでした。

        <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
            <!--グリッドレイアウト-->
            <Grid.RowDefinitions>
                <RowDefinition Height="1*"/>
                <RowDefinition Height="5*"/>
            </Grid.RowDefinitions>
            
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="1*"/>
                <ColumnDefinition Width="5*"/>
            </Grid.ColumnDefinitions>
            
            <!--要素と設定-->
            <StackPanel Name="cstack" Grid.Column="1" Grid.Row="1" Margin="20" ></StackPanel>
            
            <!--配置したボタン クリックすることでCanvasをStackPanel"cstack"へ追加する-->
            <Button Content="Button"
                    HorizontalAlignment="Left" 
                    Height="100" 
                    Grid.Row="1" 
                    VerticalAlignment="Top" 
                    Width="152" Click="Button_Click"/>
        </Grid>
            private void Button_Click(object sender, RoutedEventArgs e)
            {
                Canvas cnvs = new Canvas();
                cstack.Children.Add(cnvs);
    
                //  Colorsプロパティが設定できない
                //  cnvs.Background = new SolidColorBrush(Colors.white);
    
            }

    大変初歩的な質問かもしれませんが、なぜプロパティが出現せず、設定できないのかを分かりやすく説明していただければ幸いです。

    また、効率的な設定方法やコードがあればぜひご教示お願いします。

    ご回答お待ちしております。

    2015年5月14日 22:34

回答

  • Backgroundの型であるBrushにはGradientBrushなど他のブラシも設定できるためです。
    Ctrl+Spaceなどで候補を表示させるなどして対応してください。

    追記:
    勘違いしてました、BackgroundでなくSolidColorBrushのコンストラクタ引数のColorsの方ですね
    それは、namespaceが参照されていないからです。(ファイルの先頭にあるusingが不足)

    //ファイルの先頭に追記する
    using Windows.UI;
    あるいは
    new SolidColroBursh(Windows.UI.Colors.White);
    のようにnamespaceをはじめから入れてみてください。


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)


    • 編集済み gekkaMVP 2015年5月15日 0:32 勘違いしてたので追記
    • 回答としてマーク 黒糖 2015年5月16日 6:03
    2015年5月14日 23:38
  • こんにちは。

    Canvasを動的に配置した後に色の設定をしようとするとColorsプロパティが出現しませんでした。

    出現しないという意味がよくわかりませんでした。
    インテリセンスに表示されない、という意味でしたでしょうか。

    試した感じでは、MainPageコンストラクタでの設定時と特に変わりはありませんでした。
    レイアウト情報が不足していたので以下のように試しましたが、プロパティの設定は出来ましたし画面へも表示されました。

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        Canvas cnvs = new Canvas()
        {
            HorizontalAlignment = Windows.UI.Xaml.HorizontalAlignment.Left,
            Height = 381,
            VerticalAlignment = Windows.UI.Xaml.VerticalAlignment.Top,
            Width = 427,
            Background = new SolidColorBrush(Colors.White)
        };
        cstack.Children.Add(cnvs);
    
    }
    
    私がご質問の意味を理解していないかもしれません。

    • 回答としてマーク 黒糖 2015年5月15日 12:20
    2015年5月15日 0:15
    モデレータ

すべての返信

  • Backgroundの型であるBrushにはGradientBrushなど他のブラシも設定できるためです。
    Ctrl+Spaceなどで候補を表示させるなどして対応してください。

    追記:
    勘違いしてました、BackgroundでなくSolidColorBrushのコンストラクタ引数のColorsの方ですね
    それは、namespaceが参照されていないからです。(ファイルの先頭にあるusingが不足)

    //ファイルの先頭に追記する
    using Windows.UI;
    あるいは
    new SolidColroBursh(Windows.UI.Colors.White);
    のようにnamespaceをはじめから入れてみてください。


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)


    • 編集済み gekkaMVP 2015年5月15日 0:32 勘違いしてたので追記
    • 回答としてマーク 黒糖 2015年5月16日 6:03
    2015年5月14日 23:38
  • こんにちは。

    Canvasを動的に配置した後に色の設定をしようとするとColorsプロパティが出現しませんでした。

    出現しないという意味がよくわかりませんでした。
    インテリセンスに表示されない、という意味でしたでしょうか。

    試した感じでは、MainPageコンストラクタでの設定時と特に変わりはありませんでした。
    レイアウト情報が不足していたので以下のように試しましたが、プロパティの設定は出来ましたし画面へも表示されました。

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        Canvas cnvs = new Canvas()
        {
            HorizontalAlignment = Windows.UI.Xaml.HorizontalAlignment.Left,
            Height = 381,
            VerticalAlignment = Windows.UI.Xaml.VerticalAlignment.Top,
            Width = 427,
            Background = new SolidColorBrush(Colors.White)
        };
        cstack.Children.Add(cnvs);
    
    }
    
    私がご質問の意味を理解していないかもしれません。

    • 回答としてマーク 黒糖 2015年5月15日 12:20
    2015年5月15日 0:15
    モデレータ
  • 返答遅くなり申し訳ありません。

    ”Canvasを動的に配置した後に色の設定をしようとするとColorsプロパティが出現しませんでした。”

    そうです、Tak1waさんの言う通りインテリセンスに表示されないという意味で間違いありません。

    そちらのコードをコピーさせていただいてプログラムに反映させ、Windows.UIディレクトリを追加をすることでColorsプロパティが設定できるようになり、私が今実装させたいことが簡単にできました。

    まだまだC#の初歩的な部分やコーディング方法を勉強する必要がありそうです。

    ご回答ありがとうございました。



    • 編集済み 黒糖 2015年5月16日 6:17 追加文章
    2015年5月15日 12:35
  • 返答が大変遅くなってしまい申し訳ありません。

    本当に簡単な問題で、単にディレクトリの不足だったのですね。

    gekkaさんの言う通り、Windows.UIを追加しさらにtak1waさんのコードを組み合わせて実行したところ問題なく実装が出来ました。このたびは私の説明不足により混乱させてしまい申し訳ありませんでした。

    またこちらで質問させていただくことが多々あると思いますのでその際はよろしくお願いします。

    ご回答ありがとうございました。


    • 編集済み 黒糖 2015年5月16日 6:15 タイプミス
    2015年5月16日 6:15