@ -85,19 +85,23 @@ The `x:Name` generator can be configured via MsBuild properties that you can put
- `AvaloniaNameGeneratorBehavior`
Possible values: `OnlyProperties` , `InitializeComponent`
Default value: `InitializeComponent`
Determines if the generator should generate get-only properties, or the `InitializeComponent` method.
- `AvaloniaNameGeneratorDefaultFieldModifier`
Possible values: `internal` , `public` , `private` , `protected`
Default value: `internal`
The default field modifier that should be used when there is no `x:FieldModifier` directive specified.
- `AvaloniaNameGeneratorFilterByPath`
Posssible format: `glob_pattern` , `glob_pattern;glob_pattern`
Default value: `*`
The generator will process only XAML files with paths matching the specified glob pattern(s).
Example: `*/Views/*View.xaml` , `*View.axaml;*Control.axaml`
- `AvaloniaNameGeneratorFilterByNamespace`
Posssible format: `glob_pattern` , `glob_pattern;glob_pattern`
Default value: `*`
The generator will process only XAML files with base classes' namespaces matching the specified glob pattern(s).
Example: `MyApp.Presentation.*` , `MyApp.Presentation.Views;MyApp.Presentation.Controls`
@ -106,7 +110,7 @@ The default values are given by:
```xml
< Project Sdk = "Microsoft.NET.Sdk" >
< PropertyGroup >
< AvaloniaNameGeneratorBehavior > OnlyProperties < / AvaloniaNameGeneratorBehavior >
< AvaloniaNameGeneratorBehavior > InitializeComponent < / AvaloniaNameGeneratorBehavior >
< AvaloniaNameGeneratorDefaultFieldModifier > internal< / AvaloniaNameGeneratorDefaultFieldModifier >
< AvaloniaNameGeneratorFilterByPath > *< / AvaloniaNameGeneratorFilterByPath >
< AvaloniaNameGeneratorFilterByNamespace > *< / AvaloniaNameGeneratorFilterByNamespace >
@ -119,30 +123,7 @@ The default values are given by:
### What do the generated sources look like?
For [`SignUpView` ](https://github.com/avaloniaui/Avalonia.NameGenerator/blob/main/src/Avalonia.NameGenerator.Sandbox/Views/SignUpView.xaml ), we get the following generated output when the source generator is in the `OnlyProperties` mode:
```cs
// < auto-generated / >
using Avalonia.Controls;
namespace Avalonia.NameGenerator.Sandbox.Views
{
partial class SignUpView
{
internal global::Avalonia.NameGenerator.Sandbox.Controls.CustomTextBox UserNameTextBox => this.FindControl< global::Avalonia.NameGenerator.Sandbox.Controls.CustomTextBox > ("UserNameTextBox");
public global::Avalonia.Controls.TextBlock UserNameValidation => this.FindControl< global::Avalonia.Controls.TextBlock > ("UserNameValidation");
private global::Avalonia.Controls.TextBox PasswordTextBox => this.FindControl< global::Avalonia.Controls.TextBox > ("PasswordTextBox");
internal global::Avalonia.Controls.TextBlock PasswordValidation => this.FindControl< global::Avalonia.Controls.TextBlock > ("PasswordValidation");
internal global::Avalonia.Controls.TextBox ConfirmPasswordTextBox => this.FindControl< global::Avalonia.Controls.TextBox > ("ConfirmPasswordTextBox");
internal global::Avalonia.Controls.TextBlock ConfirmPasswordValidation => this.FindControl< global::Avalonia.Controls.TextBlock > ("ConfirmPasswordValidation");
internal global::Avalonia.Controls.Button SignUpButton => this.FindControl< global::Avalonia.Controls.Button > ("SignUpButton");
internal global::Avalonia.Controls.TextBlock CompoundValidation => this.FindControl< global::Avalonia.Controls.TextBlock > ("CompoundValidation");
}
}
```
If you enable the `InitializeComponent` source generator mode, you get:
For [`SignUpView` ](https://github.com/avaloniaui/Avalonia.NameGenerator/blob/main/src/Avalonia.NameGenerator.Sandbox/Views/SignUpView.xaml ), we get the following generated output when the source generator is in the `InitializeComponent` mode:
```cs
// < auto-generated / >
@ -192,3 +173,26 @@ namespace Sample.App
}
}
```
If you enable the `OnlyProperties` source generator mode, you get:
```cs
// < auto-generated / >
using Avalonia.Controls;
namespace Avalonia.NameGenerator.Sandbox.Views
{
partial class SignUpView
{
internal global::Avalonia.NameGenerator.Sandbox.Controls.CustomTextBox UserNameTextBox => this.FindControl< global::Avalonia.NameGenerator.Sandbox.Controls.CustomTextBox > ("UserNameTextBox");
public global::Avalonia.Controls.TextBlock UserNameValidation => this.FindControl< global::Avalonia.Controls.TextBlock > ("UserNameValidation");
private global::Avalonia.Controls.TextBox PasswordTextBox => this.FindControl< global::Avalonia.Controls.TextBox > ("PasswordTextBox");
internal global::Avalonia.Controls.TextBlock PasswordValidation => this.FindControl< global::Avalonia.Controls.TextBlock > ("PasswordValidation");
internal global::Avalonia.Controls.TextBox ConfirmPasswordTextBox => this.FindControl< global::Avalonia.Controls.TextBox > ("ConfirmPasswordTextBox");
internal global::Avalonia.Controls.TextBlock ConfirmPasswordValidation => this.FindControl< global::Avalonia.Controls.TextBlock > ("ConfirmPasswordValidation");
internal global::Avalonia.Controls.Button SignUpButton => this.FindControl< global::Avalonia.Controls.Button > ("SignUpButton");
internal global::Avalonia.Controls.TextBlock CompoundValidation => this.FindControl< global::Avalonia.Controls.TextBlock > ("CompoundValidation");
}
}
```