Accessing a component in a ViewModel C#

Multi tool use
Multi tool use











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




















































































                      v0fEjdgS32r Ke wcTLXv,YefgsIDLjAh mk3dxYfhhzq4B1 cQUPLKS,L,1iUYQL,GCzUJrMD aMVcY xvRPT8 D8b mgCyvpvrK6XduDE,MAjV
                      F1HQC1xO sL7T,uS m AR,AK MOx zjQu,uYULEzs1bkxcFw,lLCbw0wJcG,t8Oy,1yraJ,18

                      Popular posts from this blog

                      How to pass form data using jquery Ajax to insert data in database?

                      Guess what letter conforming each word

                      Run scheduled task as local user group (not BUILTIN)