none
[WPF][ImageAwesome] IconをBindしたい

    質問

  • <GroupBox x:Name="rootGroupBox">

    <fa:ImageAwesome x:Name="BatteryIcon" Icon="{Binding test}" />

    </Grid>

    このようなXAML(UserControl)にたいして、コードビハインドで

    public partial class ControllerStatusView : UserControl
    {
            public XController ViewModel { get; } = new XController();
            public ControllerStatusView()
            {
                InitializeComponent();
                rootGroupBox.DataContext = ViewModel;
            }
    }

    ViewModelの関連付けをしています。ViewModelは以下のようになっており、

        public class XController
        {
            public FontAwesome.WPF.FontAwesomeIcon test = FontAwesome.WPF.FontAwesomeIcon.AddressBook;
        }

    これで、BatteryIconにアドレス帳のアイコンが表示されることを期待しているのですが、バインドできません。なにも設定されていないときに出る□が表示されます。コードビハインドから

    BatteryIcon.Icon = FontAwesome.WPF.FontAwesomeIcon.AddressBook;
    このようにすれば動的に変更できることは確認しているのですが、XAMLでなんとか完結させたく…。

    ImageAwesomeを使ったことのある方、ご教示いただけないでしょうか、よろしくお願いします。

    環境:VS2017、C#、WPF

    2017年7月2日 6:44

回答

  • 通常のバインドではフィールドは対象となりませんのでプロパティにしましょう。(通常で無い方法はPropertyDescriptor偽装とか)

    public class XController
    {
        public FontAwesome.WPF.FontAwesomeIcon test { get { return FontAwesome.WPF.FontAwesomeIcon.AddressBook; } }
    }

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

    • 編集済み gekkaMVP 2017年7月2日 15:54
    • 回答としてマーク chiaki-neko 2017年7月2日 22:42
    2017年7月2日 15:44

すべての返信

  • 通常のバインドではフィールドは対象となりませんのでプロパティにしましょう。(通常で無い方法はPropertyDescriptor偽装とか)

    public class XController
    {
        public FontAwesome.WPF.FontAwesomeIcon test { get { return FontAwesome.WPF.FontAwesomeIcon.AddressBook; } }
    }

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

    • 編集済み gekkaMVP 2017年7月2日 15:54
    • 回答としてマーク chiaki-neko 2017年7月2日 22:42
    2017年7月2日 15:44
  • ありがとうございます…!エラーも出ずハマっていたのでとても助かりました。無事解決しました。
    2017年7月2日 22:43