@ -85,19 +85,23 @@ The `x:Name` generator can be configured via MsBuild properties that you can put
- `AvaloniaNameGeneratorBehavior`
- `AvaloniaNameGeneratorBehavior`
Possible values: `OnlyProperties` , `InitializeComponent`
Possible values: `OnlyProperties` , `InitializeComponent`
Default value: `InitializeComponent`
Determines if the generator should generate get-only properties, or the `InitializeComponent` method.
Determines if the generator should generate get-only properties, or the `InitializeComponent` method.
- `AvaloniaNameGeneratorDefaultFieldModifier`
- `AvaloniaNameGeneratorDefaultFieldModifier`
Possible values: `internal` , `public` , `private` , `protected`
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.
The default field modifier that should be used when there is no `x:FieldModifier` directive specified.
- `AvaloniaNameGeneratorFilterByPath`
- `AvaloniaNameGeneratorFilterByPath`
Posssible format: `glob_pattern` , `glob_pattern;glob_pattern`
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).
The generator will process only XAML files with paths matching the specified glob pattern(s).
Example: `*/Views/*View.xaml` , `*View.axaml;*Control.axaml`
Example: `*/Views/*View.xaml` , `*View.axaml;*Control.axaml`
- `AvaloniaNameGeneratorFilterByNamespace`
- `AvaloniaNameGeneratorFilterByNamespace`
Posssible format: `glob_pattern` , `glob_pattern;glob_pattern`
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).
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`
Example: `MyApp.Presentation.*` , `MyApp.Presentation.Views;MyApp.Presentation.Controls`
@ -106,7 +110,7 @@ The default values are given by:
```xml
```xml
< Project Sdk = "Microsoft.NET.Sdk" >
< Project Sdk = "Microsoft.NET.Sdk" >
< PropertyGroup >
< PropertyGroup >
< AvaloniaNameGeneratorBehavior > OnlyProperties < / AvaloniaNameGeneratorBehavior >
< AvaloniaNameGeneratorBehavior > InitializeComponent < / AvaloniaNameGeneratorBehavior >
< AvaloniaNameGeneratorDefaultFieldModifier > internal< / AvaloniaNameGeneratorDefaultFieldModifier >
< AvaloniaNameGeneratorDefaultFieldModifier > internal< / AvaloniaNameGeneratorDefaultFieldModifier >
< AvaloniaNameGeneratorFilterByPath > *< / AvaloniaNameGeneratorFilterByPath >
< AvaloniaNameGeneratorFilterByPath > *< / AvaloniaNameGeneratorFilterByPath >
< AvaloniaNameGeneratorFilterByNamespace > *< / AvaloniaNameGeneratorFilterByNamespace >
< AvaloniaNameGeneratorFilterByNamespace > *< / AvaloniaNameGeneratorFilterByNamespace >
@ -119,30 +123,7 @@ The default values are given by:
### What do the generated sources look like?
### 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:
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 / >
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:
```cs
```cs
// < auto-generated / >
// < 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");
}
}
```