Accessing a component in a ViewModel C#











up vote
1
down vote

favorite












I have a class that extends ViewModelBase in C#. There is already a trigger on a checkbox:



public bool PrintPackingCode
{
get
{
return this.reportConfiguration.PrintPackingCode;
}

set
{
this.reportConfiguration.PrintPackingCode = value;
this.OnPropertyChanged("PrintPackingCode");
}
}


I want to hook into that event and render a GroupBox to disable, yet I can't find a way to access the GroupBox. In the .xaml I gave my Box a name of PackingcodeGroupBox. All methods and hint I found weren't aplieable. My tries inculded:



Direct Access: PackingcodeGroupBox.Enabled = false;
Using a x:Name
this.Resources["mykey"]


Here some more Code:



//At program start assign the view it's view model:
new SmlKonfigurationWindow(new SmlKonfigurationWindowVm(reportConfiguration, smlKonfigurationDialogVm));

public SmlKonfigurationWindow(ISmlKonfigurationWindowVm viewModel)
{
this.DataContext = viewModel;
this.viewModel = viewModel;

this.InitializeComponent();
this.ShowDialog();
}


The xaml:



<CheckBox Content="Content" IsChecked="{Binding Path=PrintPackingCode, UpdateSourceTrigger=PropertyChanged}" Name="PrintPackingCode"/>
<GroupBox Header="Verpackungscode" Name="VerpackungscodeGroupbox">
//Stuff to be disabled
</GroupBox>









share|improve this question
























  • Why don't you bind GroupBox.IsEnabled to this property?
    – Rob
    Nov 8 at 11:48












  • I would, if you'd knew how it works
    – Peter
    Nov 8 at 12:03










  • Post some xaml snippets from you code and show us the code where you assign the viewModel
    – Rob
    Nov 8 at 12:04















up vote
1
down vote

favorite












I have a class that extends ViewModelBase in C#. There is already a trigger on a checkbox:



public bool PrintPackingCode
{
get
{
return this.reportConfiguration.PrintPackingCode;
}

set
{
this.reportConfiguration.PrintPackingCode = value;
this.OnPropertyChanged("PrintPackingCode");
}
}


I want to hook into that event and render a GroupBox to disable, yet I can't find a way to access the GroupBox. In the .xaml I gave my Box a name of PackingcodeGroupBox. All methods and hint I found weren't aplieable. My tries inculded:



Direct Access: PackingcodeGroupBox.Enabled = false;
Using a x:Name
this.Resources["mykey"]


Here some more Code:



//At program start assign the view it's view model:
new SmlKonfigurationWindow(new SmlKonfigurationWindowVm(reportConfiguration, smlKonfigurationDialogVm));

public SmlKonfigurationWindow(ISmlKonfigurationWindowVm viewModel)
{
this.DataContext = viewModel;
this.viewModel = viewModel;

this.InitializeComponent();
this.ShowDialog();
}


The xaml:



<CheckBox Content="Content" IsChecked="{Binding Path=PrintPackingCode, UpdateSourceTrigger=PropertyChanged}" Name="PrintPackingCode"/>
<GroupBox Header="Verpackungscode" Name="VerpackungscodeGroupbox">
//Stuff to be disabled
</GroupBox>









share|improve this question
























  • Why don't you bind GroupBox.IsEnabled to this property?
    – Rob
    Nov 8 at 11:48












  • I would, if you'd knew how it works
    – Peter
    Nov 8 at 12:03










  • Post some xaml snippets from you code and show us the code where you assign the viewModel
    – Rob
    Nov 8 at 12:04













up vote
1
down vote

favorite









up vote
1
down vote

favorite











I have a class that extends ViewModelBase in C#. There is already a trigger on a checkbox:



public bool PrintPackingCode
{
get
{
return this.reportConfiguration.PrintPackingCode;
}

set
{
this.reportConfiguration.PrintPackingCode = value;
this.OnPropertyChanged("PrintPackingCode");
}
}


I want to hook into that event and render a GroupBox to disable, yet I can't find a way to access the GroupBox. In the .xaml I gave my Box a name of PackingcodeGroupBox. All methods and hint I found weren't aplieable. My tries inculded:



Direct Access: PackingcodeGroupBox.Enabled = false;
Using a x:Name
this.Resources["mykey"]


Here some more Code:



//At program start assign the view it's view model:
new SmlKonfigurationWindow(new SmlKonfigurationWindowVm(reportConfiguration, smlKonfigurationDialogVm));

public SmlKonfigurationWindow(ISmlKonfigurationWindowVm viewModel)
{
this.DataContext = viewModel;
this.viewModel = viewModel;

this.InitializeComponent();
this.ShowDialog();
}


The xaml:



<CheckBox Content="Content" IsChecked="{Binding Path=PrintPackingCode, UpdateSourceTrigger=PropertyChanged}" Name="PrintPackingCode"/>
<GroupBox Header="Verpackungscode" Name="VerpackungscodeGroupbox">
//Stuff to be disabled
</GroupBox>









share|improve this question















I have a class that extends ViewModelBase in C#. There is already a trigger on a checkbox:



public bool PrintPackingCode
{
get
{
return this.reportConfiguration.PrintPackingCode;
}

set
{
this.reportConfiguration.PrintPackingCode = value;
this.OnPropertyChanged("PrintPackingCode");
}
}


I want to hook into that event and render a GroupBox to disable, yet I can't find a way to access the GroupBox. In the .xaml I gave my Box a name of PackingcodeGroupBox. All methods and hint I found weren't aplieable. My tries inculded:



Direct Access: PackingcodeGroupBox.Enabled = false;
Using a x:Name
this.Resources["mykey"]


Here some more Code:



//At program start assign the view it's view model:
new SmlKonfigurationWindow(new SmlKonfigurationWindowVm(reportConfiguration, smlKonfigurationDialogVm));

public SmlKonfigurationWindow(ISmlKonfigurationWindowVm viewModel)
{
this.DataContext = viewModel;
this.viewModel = viewModel;

this.InitializeComponent();
this.ShowDialog();
}


The xaml:



<CheckBox Content="Content" IsChecked="{Binding Path=PrintPackingCode, UpdateSourceTrigger=PropertyChanged}" Name="PrintPackingCode"/>
<GroupBox Header="Verpackungscode" Name="VerpackungscodeGroupbox">
//Stuff to be disabled
</GroupBox>






c# xaml viewmodel






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 8 at 12:13

























asked Nov 8 at 11:20









Peter

944929




944929












  • Why don't you bind GroupBox.IsEnabled to this property?
    – Rob
    Nov 8 at 11:48












  • I would, if you'd knew how it works
    – Peter
    Nov 8 at 12:03










  • Post some xaml snippets from you code and show us the code where you assign the viewModel
    – Rob
    Nov 8 at 12:04


















  • Why don't you bind GroupBox.IsEnabled to this property?
    – Rob
    Nov 8 at 11:48












  • I would, if you'd knew how it works
    – Peter
    Nov 8 at 12:03










  • Post some xaml snippets from you code and show us the code where you assign the viewModel
    – Rob
    Nov 8 at 12:04
















Why don't you bind GroupBox.IsEnabled to this property?
– Rob
Nov 8 at 11:48






Why don't you bind GroupBox.IsEnabled to this property?
– Rob
Nov 8 at 11:48














I would, if you'd knew how it works
– Peter
Nov 8 at 12:03




I would, if you'd knew how it works
– Peter
Nov 8 at 12:03












Post some xaml snippets from you code and show us the code where you assign the viewModel
– Rob
Nov 8 at 12:04




Post some xaml snippets from you code and show us the code where you assign the viewModel
– Rob
Nov 8 at 12:04












2 Answers
2






active

oldest

votes

















up vote
2
down vote



accepted










IsEnabled is ambiental property which means that if you disable the GroupBox all controls inside that group box will also be disabled.



Try to add a binding on GroupBox like so:



IsEnabled="{Binding PrintPackingCode}"


You can also bind IsEnabled to check box if you give name to the check box.



<CheckBox x:Name="myCheckBox" .../>
<GroupBox IsEnabled="{Binding ElementName=myCheckBox, Path=IsChecked}"/>





share|improve this answer




























    up vote
    1
    down vote













    On your vm create a new property say



    private bool _isGroupEnabled;

    public bool IsGroupEnabled
    {
    get
    {
    return _isGroupEnabled;
    }

    set
    {
    _isGroupEnabled = value;
    this.OnPropertyChanged("IsGroupEnabled");
    }
    }


    Now tie into the notify process by adjusting your set for PrintPackingCode



       set
    {
    this.reportConfiguration.PrintPackingCode = value;
    IsGroupEnabled = !value; // reverse of packing to enable/disable.
    this.OnPropertyChanged("PrintPackingCode");
    }


    Now bind your groupbox as such:



    isEnabled = "{Binding IsGroupEnabled}"





    share|improve this answer





















      Your Answer






      StackExchange.ifUsing("editor", function () {
      StackExchange.using("externalEditor", function () {
      StackExchange.using("snippets", function () {
      StackExchange.snippets.init();
      });
      });
      }, "code-snippets");

      StackExchange.ready(function() {
      var channelOptions = {
      tags: "".split(" "),
      id: "1"
      };
      initTagRenderer("".split(" "), "".split(" "), channelOptions);

      StackExchange.using("externalEditor", function() {
      // Have to fire editor after snippets, if snippets enabled
      if (StackExchange.settings.snippets.snippetsEnabled) {
      StackExchange.using("snippets", function() {
      createEditor();
      });
      }
      else {
      createEditor();
      }
      });

      function createEditor() {
      StackExchange.prepareEditor({
      heartbeatType: 'answer',
      convertImagesToLinks: true,
      noModals: true,
      showLowRepImageUploadWarning: true,
      reputationToPostImages: 10,
      bindNavPrevention: true,
      postfix: "",
      imageUploader: {
      brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
      contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
      allowUrls: true
      },
      onDemand: true,
      discardSelector: ".discard-answer"
      ,immediatelyShowMarkdownHelp:true
      });


      }
      });














       

      draft saved


      draft discarded


















      StackExchange.ready(
      function () {
      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53206716%2faccessing-a-component-in-a-viewmodel-c-sharp%23new-answer', 'question_page');
      }
      );

      Post as a guest
































      2 Answers
      2






      active

      oldest

      votes








      2 Answers
      2






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes








      up vote
      2
      down vote



      accepted










      IsEnabled is ambiental property which means that if you disable the GroupBox all controls inside that group box will also be disabled.



      Try to add a binding on GroupBox like so:



      IsEnabled="{Binding PrintPackingCode}"


      You can also bind IsEnabled to check box if you give name to the check box.



      <CheckBox x:Name="myCheckBox" .../>
      <GroupBox IsEnabled="{Binding ElementName=myCheckBox, Path=IsChecked}"/>





      share|improve this answer

























        up vote
        2
        down vote



        accepted










        IsEnabled is ambiental property which means that if you disable the GroupBox all controls inside that group box will also be disabled.



        Try to add a binding on GroupBox like so:



        IsEnabled="{Binding PrintPackingCode}"


        You can also bind IsEnabled to check box if you give name to the check box.



        <CheckBox x:Name="myCheckBox" .../>
        <GroupBox IsEnabled="{Binding ElementName=myCheckBox, Path=IsChecked}"/>





        share|improve this answer























          up vote
          2
          down vote



          accepted







          up vote
          2
          down vote



          accepted






          IsEnabled is ambiental property which means that if you disable the GroupBox all controls inside that group box will also be disabled.



          Try to add a binding on GroupBox like so:



          IsEnabled="{Binding PrintPackingCode}"


          You can also bind IsEnabled to check box if you give name to the check box.



          <CheckBox x:Name="myCheckBox" .../>
          <GroupBox IsEnabled="{Binding ElementName=myCheckBox, Path=IsChecked}"/>





          share|improve this answer












          IsEnabled is ambiental property which means that if you disable the GroupBox all controls inside that group box will also be disabled.



          Try to add a binding on GroupBox like so:



          IsEnabled="{Binding PrintPackingCode}"


          You can also bind IsEnabled to check box if you give name to the check box.



          <CheckBox x:Name="myCheckBox" .../>
          <GroupBox IsEnabled="{Binding ElementName=myCheckBox, Path=IsChecked}"/>






          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 8 at 12:18









          Rob

          1,028920




          1,028920
























              up vote
              1
              down vote













              On your vm create a new property say



              private bool _isGroupEnabled;

              public bool IsGroupEnabled
              {
              get
              {
              return _isGroupEnabled;
              }

              set
              {
              _isGroupEnabled = value;
              this.OnPropertyChanged("IsGroupEnabled");
              }
              }


              Now tie into the notify process by adjusting your set for PrintPackingCode



                 set
              {
              this.reportConfiguration.PrintPackingCode = value;
              IsGroupEnabled = !value; // reverse of packing to enable/disable.
              this.OnPropertyChanged("PrintPackingCode");
              }


              Now bind your groupbox as such:



              isEnabled = "{Binding IsGroupEnabled}"





              share|improve this answer

























                up vote
                1
                down vote













                On your vm create a new property say



                private bool _isGroupEnabled;

                public bool IsGroupEnabled
                {
                get
                {
                return _isGroupEnabled;
                }

                set
                {
                _isGroupEnabled = value;
                this.OnPropertyChanged("IsGroupEnabled");
                }
                }


                Now tie into the notify process by adjusting your set for PrintPackingCode



                   set
                {
                this.reportConfiguration.PrintPackingCode = value;
                IsGroupEnabled = !value; // reverse of packing to enable/disable.
                this.OnPropertyChanged("PrintPackingCode");
                }


                Now bind your groupbox as such:



                isEnabled = "{Binding IsGroupEnabled}"





                share|improve this answer























                  up vote
                  1
                  down vote










                  up vote
                  1
                  down vote









                  On your vm create a new property say



                  private bool _isGroupEnabled;

                  public bool IsGroupEnabled
                  {
                  get
                  {
                  return _isGroupEnabled;
                  }

                  set
                  {
                  _isGroupEnabled = value;
                  this.OnPropertyChanged("IsGroupEnabled");
                  }
                  }


                  Now tie into the notify process by adjusting your set for PrintPackingCode



                     set
                  {
                  this.reportConfiguration.PrintPackingCode = value;
                  IsGroupEnabled = !value; // reverse of packing to enable/disable.
                  this.OnPropertyChanged("PrintPackingCode");
                  }


                  Now bind your groupbox as such:



                  isEnabled = "{Binding IsGroupEnabled}"





                  share|improve this answer












                  On your vm create a new property say



                  private bool _isGroupEnabled;

                  public bool IsGroupEnabled
                  {
                  get
                  {
                  return _isGroupEnabled;
                  }

                  set
                  {
                  _isGroupEnabled = value;
                  this.OnPropertyChanged("IsGroupEnabled");
                  }
                  }


                  Now tie into the notify process by adjusting your set for PrintPackingCode



                     set
                  {
                  this.reportConfiguration.PrintPackingCode = value;
                  IsGroupEnabled = !value; // reverse of packing to enable/disable.
                  this.OnPropertyChanged("PrintPackingCode");
                  }


                  Now bind your groupbox as such:



                  isEnabled = "{Binding IsGroupEnabled}"






                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Nov 8 at 12:21









                  ΩmegaMan

                  15.7k44160




                  15.7k44160






























                       

                      draft saved


                      draft discarded



















































                       


                      draft saved


                      draft discarded














                      StackExchange.ready(
                      function () {
                      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53206716%2faccessing-a-component-in-a-viewmodel-c-sharp%23new-answer', 'question_page');
                      }
                      );

                      Post as a guest




















































































                      Popular posts from this blog

                      鏡平學校

                      ꓛꓣだゔៀៅຸ໢ທຮ໕໒ ,ໂ'໥໓າ໼ឨឲ៵៭ៈゎゔit''䖳𥁄卿' ☨₤₨こゎもょの;ꜹꟚꞖꞵꟅꞛေၦေɯ,ɨɡ𛃵𛁹ޝ޳ޠ޾,ޤޒޯ޾𫝒𫠁သ𛅤チョ'サノބޘދ𛁐ᶿᶇᶀᶋᶠ㨑㽹⻮ꧬ꧹؍۩وَؠ㇕㇃㇪ ㇦㇋㇋ṜẰᵡᴠ 軌ᵕ搜۳ٰޗޮ޷ސޯ𫖾𫅀ल, ꙭ꙰ꚅꙁꚊꞻꝔ꟠Ꝭㄤﺟޱސꧨꧼ꧴ꧯꧽ꧲ꧯ'⽹⽭⾁⿞⼳⽋២៩ញណើꩯꩤ꩸ꩮᶻᶺᶧᶂ𫳲𫪭𬸄𫵰𬖩𬫣𬊉ၲ𛅬㕦䬺𫝌𫝼,,𫟖𫞽ហៅ஫㆔ాఆఅꙒꚞꙍ,Ꙟ꙱エ ,ポテ,フࢰࢯ𫟠𫞶 𫝤𫟠ﺕﹱﻜﻣ𪵕𪭸𪻆𪾩𫔷ġ,ŧآꞪ꟥,ꞔꝻ♚☹⛵𛀌ꬷꭞȄƁƪƬșƦǙǗdžƝǯǧⱦⱰꓕꓢႋ神 ဴ၀க௭எ௫ឫោ ' េㇷㇴㇼ神ㇸㇲㇽㇴㇼㇻㇸ'ㇸㇿㇸㇹㇰㆣꓚꓤ₡₧ ㄨㄟ㄂ㄖㄎ໗ツڒذ₶।ऩछएोञयूटक़कयँृी,冬'𛅢𛅥ㇱㇵㇶ𥄥𦒽𠣧𠊓𧢖𥞘𩔋цѰㄠſtʯʭɿʆʗʍʩɷɛ,əʏダヵㄐㄘR{gỚṖḺờṠṫảḙḭᴮᵏᴘᵀᵷᵕᴜᴏᵾq﮲ﲿﴽﭙ軌ﰬﶚﶧ﫲Ҝжюїкӈㇴffצּ﬘﭅﬈軌'ffistfflſtffतभफɳɰʊɲʎ𛁱𛁖𛁮𛀉 𛂯𛀞నఋŀŲ 𫟲𫠖𫞺ຆຆ ໹້໕໗ๆทԊꧢꧠ꧰ꓱ⿝⼑ŎḬẃẖỐẅ ,ờỰỈỗﮊDžȩꭏꭎꬻ꭮ꬿꭖꭥꭅ㇭神 ⾈ꓵꓑ⺄㄄ㄪㄙㄅㄇstA۵䞽ॶ𫞑𫝄㇉㇇゜軌𩜛𩳠Jﻺ‚Üမ႕ႌႊၐၸဓၞၞၡ៸wyvtᶎᶪᶹစဎ꣡꣰꣢꣤ٗ؋لㇳㇾㇻㇱ㆐㆔,,㆟Ⱶヤマފ޼ޝަݿݞݠݷݐ',ݘ,ݪݙݵ𬝉𬜁𫝨𫞘くせぉて¼óû×ó£…𛅑הㄙくԗԀ5606神45,神796'𪤻𫞧ꓐ㄁ㄘɥɺꓵꓲ3''7034׉ⱦⱠˆ“𫝋ȍ,ꩲ軌꩷ꩶꩧꩫఞ۔فڱێظペサ神ナᴦᵑ47 9238їﻂ䐊䔉㠸﬎ffiﬣ,לּᴷᴦᵛᵽ,ᴨᵤ ᵸᵥᴗᵈꚏꚉꚟ⻆rtǟƴ𬎎

                      Why https connections are so slow when debugging (stepping over) in Java?