wpf Contentcontrol validation The 2019 Stack Overflow Developer Survey Results Are In Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern) The Ask Question Wizard is Live! Data science time! April 2019 and salary with experienceValidate decimal numbers in JavaScript - IsNumeric()How to validate an email address in JavaScript?A comprehensive regex for phone number validation(Built-in) way in JavaScript to check if a string is a valid numberHow to validate an email address using a regular expression?What is the maximum length of a valid email address?What's the difference between ContentControl and ContentPresenter?WPF change Button Content on ViewModel.PropertyChanged eventcombo box inside a user control disappears when style is applied in wpfWPF Binding not updating from DispatcherTimer

How can I protect witches in combat who wear limited clothing?

Typeface like Times New Roman but with "tied" percent sign

Movie about afterlife I think? Large towers with clothing and food?

Does Parliament need to approve the new Brexit delay to 31 October 2019?

Windows 10: How to Lock (not sleep) laptop on lid close?

Is this wall load bearing? Blueprints and photos attached

Why is superheterodyning better than direct conversion?

rotate text in posterbox

Wolves and sheep

Am I ethically obligated to go into work on an off day if the reason is sudden?

does high air pressure throw off wheel balance?

How to make `trap` know if the EXIT is after successful program finish or because of premature as an error or something

What do you call a plan that's an alternative plan in case your initial plan fails?

ELI5: Why do they say that Israel would have been the fourth country to land a spacecraft on the Moon and why do they call it low cost?

Format single node in tikzcd

Can a 1st-level character have an ability score above 18?

Take groceries in checked luggage

Make it rain characters

He got a vote 80% that of Emmanuel Macron’s

What LEGO pieces have "real-world" functionality?

Slither Like a Snake

When did F become S in typeography, and why?

Did the new image of black hole confirm the general theory of relativity?

Didn't get enough time to take a Coding Test - what to do now?



wpf Contentcontrol validation



The 2019 Stack Overflow Developer Survey Results Are In
Announcing the arrival of Valued Associate #679: Cesar Manara
Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)
The Ask Question Wizard is Live!
Data science time! April 2019 and salary with experienceValidate decimal numbers in JavaScript - IsNumeric()How to validate an email address in JavaScript?A comprehensive regex for phone number validation(Built-in) way in JavaScript to check if a string is a valid numberHow to validate an email address using a regular expression?What is the maximum length of a valid email address?What's the difference between ContentControl and ContentPresenter?WPF change Button Content on ViewModel.PropertyChanged eventcombo box inside a user control disappears when style is applied in wpfWPF Binding not updating from DispatcherTimer



.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;








1















how to make Validation work on ContentControl ?
There is a class that is responsible for storing a value with units of measure, it is displayed in the content control through a dataset, I would like to check for correctness when displaying and editing it, for example, units cannot have a value of 2, or the value should be less than 10,000. solve this with multibinding, the validation rule is not satisfied when editing values.



Xaml file:



 <Window x:Class="DELETE1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:DELETE1"
xmlns:diag="clr-namespace:System.Diagnostics;assembly=WindowsBase"
mc:Ignorable="d"
x:Name="m_win"
Title="MainWindow" Height="450" Width="800">
<Window.Resources>
<DataTemplate DataType="x:Type local:ValWithUnits">
<Border>
<DockPanel>
<ComboBox DockPanel.Dock="Right" Width="60" IsEnabled="True" SelectedIndex="Binding Unit" ItemsSource="Binding Src, ElementName=m_win" />
<TextBox Text="Binding Val, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged" IsEnabled="True"/>
</DockPanel>
</Border>
</DataTemplate>
<local:MultiBindingConverter x:Key="MultiBindingConverter" />
</Window.Resources>
<Grid>
<ContentControl x:Name="m_contentControl">
<ContentControl.Content>
<MultiBinding Mode="TwoWay" NotifyOnValidationError="True"
UpdateSourceTrigger="PropertyChanged"
diag:PresentationTraceSources.TraceLevel="High"
Converter="StaticResource MultiBindingConverter" >
<Binding Path="Val" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" diag:PresentationTraceSources.TraceLevel="High"></Binding>
<Binding Path="Unit" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" diag:PresentationTraceSources.TraceLevel="High"></Binding>
<MultiBinding.ValidationRules>
<local:ContentControlValidationRule ValidatesOnTargetUpdated="True" x:Name="MValidationRule"/>
</MultiBinding.ValidationRules>
</MultiBinding>
</ContentControl.Content>
</ContentControl>
</Grid>
</Window>


And code file:



public class ValWithUnits:INotifyPropertyChanged

private double m_val;
private int m_unit;
public double Val

get => m_val;
set

m_val = value;
OnPropertyChanged(nameof(Val));


public int Unit

get => m_unit;
set

m_unit = value;
OnPropertyChanged(nameof(Unit));


public event PropertyChangedEventHandler PropertyChanged;

[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged(string propertyName)

PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));


/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window

public ValWithUnits MyValueWithUnits get; set; = new ValWithUnits();

public MainWindow()

InitializeComponent();
var a = new Binding("MyValueWithUnits");
a.Source = this;
a.ValidatesOnDataErrors = true;
a.ValidatesOnExceptions = true;
a.NotifyOnValidationError = true;
m_contentControl.SetBinding(ContentControl.ContentProperty, a);



public IEnumerable<int> Src => new int[] 1,2,3;


public class ContentControlValidationRule : ValidationRule

public override ValidationResult Validate(object value, CultureInfo cultureInfo)

//Debug.Fail("validate");

return ValidationResult.ValidResult;


private static ValidationResult BadValidation(string msg) =>
new ValidationResult(false, msg);



public class MultiBindingConverter : IMultiValueConverter

public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)

return string.Format("0-1", values[0], values[1]);


public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)

return new object[] 1, 1 ;




Validation 'ContentControlValidationRule' which I install through multi-binding does not work.










share|improve this question




























    1















    how to make Validation work on ContentControl ?
    There is a class that is responsible for storing a value with units of measure, it is displayed in the content control through a dataset, I would like to check for correctness when displaying and editing it, for example, units cannot have a value of 2, or the value should be less than 10,000. solve this with multibinding, the validation rule is not satisfied when editing values.



    Xaml file:



     <Window x:Class="DELETE1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:DELETE1"
    xmlns:diag="clr-namespace:System.Diagnostics;assembly=WindowsBase"
    mc:Ignorable="d"
    x:Name="m_win"
    Title="MainWindow" Height="450" Width="800">
    <Window.Resources>
    <DataTemplate DataType="x:Type local:ValWithUnits">
    <Border>
    <DockPanel>
    <ComboBox DockPanel.Dock="Right" Width="60" IsEnabled="True" SelectedIndex="Binding Unit" ItemsSource="Binding Src, ElementName=m_win" />
    <TextBox Text="Binding Val, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged" IsEnabled="True"/>
    </DockPanel>
    </Border>
    </DataTemplate>
    <local:MultiBindingConverter x:Key="MultiBindingConverter" />
    </Window.Resources>
    <Grid>
    <ContentControl x:Name="m_contentControl">
    <ContentControl.Content>
    <MultiBinding Mode="TwoWay" NotifyOnValidationError="True"
    UpdateSourceTrigger="PropertyChanged"
    diag:PresentationTraceSources.TraceLevel="High"
    Converter="StaticResource MultiBindingConverter" >
    <Binding Path="Val" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" diag:PresentationTraceSources.TraceLevel="High"></Binding>
    <Binding Path="Unit" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" diag:PresentationTraceSources.TraceLevel="High"></Binding>
    <MultiBinding.ValidationRules>
    <local:ContentControlValidationRule ValidatesOnTargetUpdated="True" x:Name="MValidationRule"/>
    </MultiBinding.ValidationRules>
    </MultiBinding>
    </ContentControl.Content>
    </ContentControl>
    </Grid>
    </Window>


    And code file:



    public class ValWithUnits:INotifyPropertyChanged

    private double m_val;
    private int m_unit;
    public double Val

    get => m_val;
    set

    m_val = value;
    OnPropertyChanged(nameof(Val));


    public int Unit

    get => m_unit;
    set

    m_unit = value;
    OnPropertyChanged(nameof(Unit));


    public event PropertyChangedEventHandler PropertyChanged;

    [NotifyPropertyChangedInvocator]
    protected virtual void OnPropertyChanged(string propertyName)

    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));


    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window

    public ValWithUnits MyValueWithUnits get; set; = new ValWithUnits();

    public MainWindow()

    InitializeComponent();
    var a = new Binding("MyValueWithUnits");
    a.Source = this;
    a.ValidatesOnDataErrors = true;
    a.ValidatesOnExceptions = true;
    a.NotifyOnValidationError = true;
    m_contentControl.SetBinding(ContentControl.ContentProperty, a);



    public IEnumerable<int> Src => new int[] 1,2,3;


    public class ContentControlValidationRule : ValidationRule

    public override ValidationResult Validate(object value, CultureInfo cultureInfo)

    //Debug.Fail("validate");

    return ValidationResult.ValidResult;


    private static ValidationResult BadValidation(string msg) =>
    new ValidationResult(false, msg);



    public class MultiBindingConverter : IMultiValueConverter

    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)

    return string.Format("0-1", values[0], values[1]);


    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)

    return new object[] 1, 1 ;




    Validation 'ContentControlValidationRule' which I install through multi-binding does not work.










    share|improve this question
























      1












      1








      1


      1






      how to make Validation work on ContentControl ?
      There is a class that is responsible for storing a value with units of measure, it is displayed in the content control through a dataset, I would like to check for correctness when displaying and editing it, for example, units cannot have a value of 2, or the value should be less than 10,000. solve this with multibinding, the validation rule is not satisfied when editing values.



      Xaml file:



       <Window x:Class="DELETE1.MainWindow"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
      xmlns:local="clr-namespace:DELETE1"
      xmlns:diag="clr-namespace:System.Diagnostics;assembly=WindowsBase"
      mc:Ignorable="d"
      x:Name="m_win"
      Title="MainWindow" Height="450" Width="800">
      <Window.Resources>
      <DataTemplate DataType="x:Type local:ValWithUnits">
      <Border>
      <DockPanel>
      <ComboBox DockPanel.Dock="Right" Width="60" IsEnabled="True" SelectedIndex="Binding Unit" ItemsSource="Binding Src, ElementName=m_win" />
      <TextBox Text="Binding Val, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged" IsEnabled="True"/>
      </DockPanel>
      </Border>
      </DataTemplate>
      <local:MultiBindingConverter x:Key="MultiBindingConverter" />
      </Window.Resources>
      <Grid>
      <ContentControl x:Name="m_contentControl">
      <ContentControl.Content>
      <MultiBinding Mode="TwoWay" NotifyOnValidationError="True"
      UpdateSourceTrigger="PropertyChanged"
      diag:PresentationTraceSources.TraceLevel="High"
      Converter="StaticResource MultiBindingConverter" >
      <Binding Path="Val" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" diag:PresentationTraceSources.TraceLevel="High"></Binding>
      <Binding Path="Unit" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" diag:PresentationTraceSources.TraceLevel="High"></Binding>
      <MultiBinding.ValidationRules>
      <local:ContentControlValidationRule ValidatesOnTargetUpdated="True" x:Name="MValidationRule"/>
      </MultiBinding.ValidationRules>
      </MultiBinding>
      </ContentControl.Content>
      </ContentControl>
      </Grid>
      </Window>


      And code file:



      public class ValWithUnits:INotifyPropertyChanged

      private double m_val;
      private int m_unit;
      public double Val

      get => m_val;
      set

      m_val = value;
      OnPropertyChanged(nameof(Val));


      public int Unit

      get => m_unit;
      set

      m_unit = value;
      OnPropertyChanged(nameof(Unit));


      public event PropertyChangedEventHandler PropertyChanged;

      [NotifyPropertyChangedInvocator]
      protected virtual void OnPropertyChanged(string propertyName)

      PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));


      /// <summary>
      /// Interaction logic for MainWindow.xaml
      /// </summary>
      public partial class MainWindow : Window

      public ValWithUnits MyValueWithUnits get; set; = new ValWithUnits();

      public MainWindow()

      InitializeComponent();
      var a = new Binding("MyValueWithUnits");
      a.Source = this;
      a.ValidatesOnDataErrors = true;
      a.ValidatesOnExceptions = true;
      a.NotifyOnValidationError = true;
      m_contentControl.SetBinding(ContentControl.ContentProperty, a);



      public IEnumerable<int> Src => new int[] 1,2,3;


      public class ContentControlValidationRule : ValidationRule

      public override ValidationResult Validate(object value, CultureInfo cultureInfo)

      //Debug.Fail("validate");

      return ValidationResult.ValidResult;


      private static ValidationResult BadValidation(string msg) =>
      new ValidationResult(false, msg);



      public class MultiBindingConverter : IMultiValueConverter

      public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)

      return string.Format("0-1", values[0], values[1]);


      public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)

      return new object[] 1, 1 ;




      Validation 'ContentControlValidationRule' which I install through multi-binding does not work.










      share|improve this question














      how to make Validation work on ContentControl ?
      There is a class that is responsible for storing a value with units of measure, it is displayed in the content control through a dataset, I would like to check for correctness when displaying and editing it, for example, units cannot have a value of 2, or the value should be less than 10,000. solve this with multibinding, the validation rule is not satisfied when editing values.



      Xaml file:



       <Window x:Class="DELETE1.MainWindow"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
      xmlns:local="clr-namespace:DELETE1"
      xmlns:diag="clr-namespace:System.Diagnostics;assembly=WindowsBase"
      mc:Ignorable="d"
      x:Name="m_win"
      Title="MainWindow" Height="450" Width="800">
      <Window.Resources>
      <DataTemplate DataType="x:Type local:ValWithUnits">
      <Border>
      <DockPanel>
      <ComboBox DockPanel.Dock="Right" Width="60" IsEnabled="True" SelectedIndex="Binding Unit" ItemsSource="Binding Src, ElementName=m_win" />
      <TextBox Text="Binding Val, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged" IsEnabled="True"/>
      </DockPanel>
      </Border>
      </DataTemplate>
      <local:MultiBindingConverter x:Key="MultiBindingConverter" />
      </Window.Resources>
      <Grid>
      <ContentControl x:Name="m_contentControl">
      <ContentControl.Content>
      <MultiBinding Mode="TwoWay" NotifyOnValidationError="True"
      UpdateSourceTrigger="PropertyChanged"
      diag:PresentationTraceSources.TraceLevel="High"
      Converter="StaticResource MultiBindingConverter" >
      <Binding Path="Val" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" diag:PresentationTraceSources.TraceLevel="High"></Binding>
      <Binding Path="Unit" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" diag:PresentationTraceSources.TraceLevel="High"></Binding>
      <MultiBinding.ValidationRules>
      <local:ContentControlValidationRule ValidatesOnTargetUpdated="True" x:Name="MValidationRule"/>
      </MultiBinding.ValidationRules>
      </MultiBinding>
      </ContentControl.Content>
      </ContentControl>
      </Grid>
      </Window>


      And code file:



      public class ValWithUnits:INotifyPropertyChanged

      private double m_val;
      private int m_unit;
      public double Val

      get => m_val;
      set

      m_val = value;
      OnPropertyChanged(nameof(Val));


      public int Unit

      get => m_unit;
      set

      m_unit = value;
      OnPropertyChanged(nameof(Unit));


      public event PropertyChangedEventHandler PropertyChanged;

      [NotifyPropertyChangedInvocator]
      protected virtual void OnPropertyChanged(string propertyName)

      PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));


      /// <summary>
      /// Interaction logic for MainWindow.xaml
      /// </summary>
      public partial class MainWindow : Window

      public ValWithUnits MyValueWithUnits get; set; = new ValWithUnits();

      public MainWindow()

      InitializeComponent();
      var a = new Binding("MyValueWithUnits");
      a.Source = this;
      a.ValidatesOnDataErrors = true;
      a.ValidatesOnExceptions = true;
      a.NotifyOnValidationError = true;
      m_contentControl.SetBinding(ContentControl.ContentProperty, a);



      public IEnumerable<int> Src => new int[] 1,2,3;


      public class ContentControlValidationRule : ValidationRule

      public override ValidationResult Validate(object value, CultureInfo cultureInfo)

      //Debug.Fail("validate");

      return ValidationResult.ValidResult;


      private static ValidationResult BadValidation(string msg) =>
      new ValidationResult(false, msg);



      public class MultiBindingConverter : IMultiValueConverter

      public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)

      return string.Format("0-1", values[0], values[1]);


      public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)

      return new object[] 1, 1 ;




      Validation 'ContentControlValidationRule' which I install through multi-binding does not work.







      wpf validation contentcontrol






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Mar 8 at 13:28









      user3400760user3400760

      61




      61






















          0






          active

          oldest

          votes












          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',
          autoActivateHeartbeat: false,
          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%2f55064218%2fwpf-contentcontrol-validation%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          0






          active

          oldest

          votes








          0






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes















          draft saved

          draft discarded
















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55064218%2fwpf-contentcontrol-validation%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          1928 у кіно

          Захаров Федір Захарович

          Ель Греко