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

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

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

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

Q&A

解決済

3回答

3676閲覧

WPFでOpacityをBindingしたいです。

cancat

総合スコア313

WPF

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

0グッド

0クリップ

投稿2016/10/28 08:09

こんにちは。
Windows10でWPFのアプリケーションを開発しています。
Visual Studio 2015 Communityを使っています。

###前提・実現したいこと
OpacityをBindingしたいです。

###試したこと
<SolidColorBrush Color="Black" Opacity="0.6"/>

<SolidColorBrush Color="Black" Opacity="{Binding MyOpacity}"/>
として、C#で、
public static double MyOpacity = 0.5;
と設定しました。

###発生している問題・エラーメッセージ
public static double MyOpacity = 0.5;
としているのにMyOpacityが1になる。

###該当のソースコード

xaml

1<Rectangle> 2<SolidColorBrush Color="Black" Opacity="0.6"/> 3</Rectangle>

C#

1public static double MyOpacity = 0.5;

###補足情報(言語/FW/ツール等のバージョンなど)
Microsoft Visual Studio Community 2015
Version 14.0.25424.00 Update 3
Microsoft .NET Framework
Version 4.6.01038

インストールしているバージョン:Community

Visual C# 2015 00322-20000-00000-AA575
Microsoft Visual C# 2015

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

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

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

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

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

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

ozwk

2016/10/28 08:16

MyOpacityはどこに宣言しているんですか?
cancat

2016/10/28 08:41

C#のfieldです。
ozwk

2016/10/28 13:58 編集

ひょっとして~~~.xaml.csに書いてます?
cancat

2016/10/31 01:49

**.xaml.csではなく、**Model.csを作っています。いちおうClassも分かれています。
guest

回答3

0

フィールドはバインドできませんので、プロパティにしてください。

public static double MyOpacity = 0.5;

public static double MyOpacity { get; set; } = 0.5;

投稿2016/10/28 08:40

編集2016/10/28 08:40
hihijiji

総合スコア4150

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

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

cancat

2016/10/28 09:37

Propertyにしましたが、まだだめです。
guest

0

ベストアンサー

xml

1<Window.DataContext> 2 <local:~~~Model/> <!-- バインディングしたいプロパティを持っているやつ --> 3</Window.DataContext>

DataContextの設定しないと
Xamlも「これバインディングしたいって言うけどそれどこにあるのよ?」と戸惑います。
ちゃんと指示しましょう。

投稿2016/10/31 02:00

ozwk

総合スコア13521

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

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

cancat

2016/10/31 02:59

ありがとうございます。これでした。 どうしてDataContextを指定しないのにVisual Studio エラー出してくれないんでしょうね。。。。。
guest

0

これを試してみてください。

Public double MyOpacity { get{ return 0.5; } }

投稿2016/10/28 08:25

lain

総合スコア161

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

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

cancat

2016/10/28 08:40

早速ありがとうございます。 依然、まっくろくろすけでございます。
lain

2016/10/28 08:50

MyOpacityがどこに書かれているのか分からないのですが、 xaml側でDataContextの設定をしていますか?
cancat

2016/10/28 09:33

DataContentの設定とは何でしょう?
cancat

2016/10/28 09:45 編集

public static double MyOpacity { get; set; } = 0.5; として、 <SolidColorBrush x:Name="MyBrush" Color="Black" Opacity="{Binding MyOpacity}"/> として、Loadedで、 MyBrush.Opacity = MyOpacity; とすれば0.5を設定できましたが、これはBindingではないですよねー? これなら public static double MyOpacity { get; set; } = 0.5; として、 <SolidColorBrush x:Name="MyBrush" Color="Black"/> として、Loadedで、 MyBrush.Opacity = MyOpacity; とするだけでよさそうですもんね。
lain

2016/10/31 02:40

MyBrush.Opacity = MyOpacity; は、直接コントロールのプロパティに書き込んでいるだけですね。 MVVMパターンを目指されていると見受けられますので、 hihijijiさんが書かれているサイトや、 MVVM入門 その1「シンプル四則演算アプリケーションの作成」 https://code.msdn.microsoft.com/windowsdesktop/MVVM-d8261534 を参考にしていただくのが良いかと思います。
cancat

2016/10/31 03:00

ありがとうございます。MVVMをちょっとずつですが勉強しています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問