Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AGD-2199 - custom dropdown node #11958

Merged
merged 101 commits into from
Aug 19, 2022
Merged
Show file tree
Hide file tree
Changes from 19 commits
Commits
Show all changes
101 commits
Select commit Hold shift + click to select a range
2fdcfcc
First successful build
LongNguyenP Aug 12, 2021
30e278d
Added to Library View Extension
LongNguyenP Aug 17, 2021
c0553ff
Remove dependency on PresentationCore.dll
LongNguyenP Aug 19, 2021
00587d3
Updated some attributes
LongNguyenP Aug 30, 2021
37f164b
Added some resource strings
LongNguyenP Sep 14, 2021
795dfd7
AssemblySharedInfo
LongNguyenP Sep 14, 2021
d15bfd1
Changed name to "Custom Dropdown"
LongNguyenP Sep 14, 2021
975b821
Merge branch 'master' of https://github.com/DynamoDS/Dynamo into AGD-…
LongNguyenP Sep 14, 2021
047b9e2
Added MD file
LongNguyenP Sep 14, 2021
4c843b2
Made changes to address two failed tests
LongNguyenP Sep 28, 2021
c05095f
Fix broken tests (#12082)
saintentropy Sep 28, 2021
8b1d743
Added test related files
LongNguyenP Sep 29, 2021
93377f7
AGD 2199 Test Fix (#12161)
saintentropy Oct 19, 2021
b1ec208
Merge branch 'master' into AGD-2199
saintentropy Oct 19, 2021
0960dd5
Merge branch 'master' of https://github.com/DynamoDS/Dynamo into AGD-…
LongNguyenP Dec 1, 2021
9361301
Modern styling applied to CustomDropdown node
LongNguyenP Dec 4, 2021
a37cb5e
Update MarkdownGeneratorCommandTests.cs
saintentropy Dec 8, 2021
93f4013
Merge branch 'master' into AGD-2199
LongNguyenP Jan 31, 2022
d6e00e2
Resolved PR conflicts with master
LongNguyenP Jan 31, 2022
d576591
Midway commit
LongNguyenP Feb 1, 2022
b6cc773
Cleanup mostly done
LongNguyenP Feb 1, 2022
00c78e1
Addressed all issues related to first PR review round
LongNguyenP Feb 2, 2022
103b0ea
Removed .idea directory and added it to .gitignore
LongNguyenP Feb 18, 2022
312bd9e
Icon
LongNguyenP Mar 1, 2022
0fb12c6
Merge branch 'master' into AGD-2199
LongNguyenP Mar 1, 2022
9e25ff2
Merged from master
LongNguyenP Mar 1, 2022
83f201f
Waypoint
LongNguyenP Mar 2, 2022
58d37ee
Error
LongNguyenP Mar 3, 2022
4e0473a
Commit just before fixing bug related to JSON deseiralization
LongNguyenP Mar 4, 2022
34a82ba
Fixed regression bug
LongNguyenP Mar 4, 2022
5a4ac2c
DYN file test completed
LongNguyenP Mar 5, 2022
6d17a1a
Merge branch 'master' into AGD-2199
LongNguyenP Mar 5, 2022
8999190
Added tests and simplify some methods
LongNguyenP Mar 7, 2022
1423185
Addded the .dyn file required for tests to git tracking
LongNguyenP Mar 8, 2022
b4bc256
Corrected node name
LongNguyenP Mar 17, 2022
68b99df
Addressed a couple of PR comments
LongNguyenP Mar 17, 2022
07c08c7
Deleted unused method
LongNguyenP Mar 22, 2022
0a425ef
Merge branch 'master' into AGD-2199
LongNguyenP Mar 24, 2022
4794e0f
Solved conflict with master
LongNguyenP Mar 24, 2022
bc67923
A couple of changes
LongNguyenP Apr 5, 2022
a1d597c
AssemblySharedInfo
LongNguyenP Apr 5, 2022
51e71ae
Merge branch 'master' into AGD-2199
LongNguyenP Apr 5, 2022
c8cb45a
Undid whitespace removal
LongNguyenP Apr 6, 2022
58c17ba
Undid blank line at the end of file
LongNguyenP Apr 6, 2022
35effd3
Undid whitespace removal
LongNguyenP Apr 6, 2022
beccd48
Undid whitespace removal
LongNguyenP Apr 6, 2022
dad3c80
Undid whitespace removal
LongNguyenP Apr 6, 2022
99bec28
Undid blank line
LongNguyenP Apr 6, 2022
2bf0479
Revert XML indent size to 2 whitespaces
LongNguyenP Apr 6, 2022
49bfb1b
Revert "Undid blank line"
LongNguyenP Apr 6, 2022
9cf40e5
Revert blank line
LongNguyenP Apr 6, 2022
5a60114
Undid auto whitespace removal
LongNguyenP Apr 6, 2022
1f14c3e
Undid auto whitespace removal
LongNguyenP Apr 6, 2022
5ac8d1b
Undid auto whitespace removal
LongNguyenP Apr 6, 2022
8129161
Undid auto whitespace removal
LongNguyenP Apr 6, 2022
9576110
Revert version number
LongNguyenP Apr 6, 2022
e4e1345
Undid auto whitespace removal
LongNguyenP Apr 6, 2022
6c465dc
Deleted two auto-generated resource cs files
LongNguyenP Apr 12, 2022
9c80434
Fix build
saintentropy Apr 12, 2022
9bb71ce
Merge remote-tracking branch 'origin/master' into AGD-2199
twastvedt Aug 2, 2022
e849045
Don't hold separate source of truth, use Dynamo UI components.
twastvedt Aug 5, 2022
c41f397
Fix formatting.
twastvedt Aug 8, 2022
f036043
Remove INotifyPropertyChanged from DynamoDropDownItem.
twastvedt Aug 8, 2022
b445a0a
Fix some binding updates.
twastvedt Aug 8, 2022
bea4f47
Improve tab navigation.
twastvedt Aug 8, 2022
b322185
Fix more binding updates.
twastvedt Aug 8, 2022
490905e
Remove logging.
twastvedt Aug 8, 2022
882e237
Fix remove button styling.
twastvedt Aug 8, 2022
4ec277d
Rename to match current convention.
twastvedt Aug 8, 2022
d916b86
Fix build by removing last line of AssemblySharedInfo.tt?
twastvedt Aug 8, 2022
8b53b5c
Merge branch 'master' into AGD-2199
twastvedt Aug 9, 2022
a1a783f
Clean up tests.
twastvedt Aug 9, 2022
6214991
Clean up unnecessary changes.
twastvedt Aug 9, 2022
b591474
Clean up extra styling.
twastvedt Aug 9, 2022
5327934
Match +/- button color with existing nodes.
twastvedt Aug 10, 2022
f64efbf
Add serialization.
twastvedt Aug 10, 2022
d952576
Undo unnecessary changes.
twastvedt Aug 10, 2022
8839d44
Fix image class names.
twastvedt Aug 12, 2022
920e548
Fix copy/paste deserialization.
twastvedt Aug 12, 2022
443d557
Actually fix icon images.
twastvedt Aug 12, 2022
ef941ea
Fix dropdown test.
twastvedt Aug 12, 2022
22199a4
Remove lacing comment.
twastvedt Aug 15, 2022
1b7fe1a
Merge branch 'master' into AGD-2199
twastvedt Aug 15, 2022
e776bd4
Merge branch 'master' into AGD-2199
twastvedt Aug 15, 2022
88b4f6c
Add custom selection documentation files.
twastvedt Aug 16, 2022
5e1eef9
Update incorrect documentation on DoubleInput.
twastvedt Aug 16, 2022
0b11cd6
Merge branch 'AGD-2199' of https://github.com/DynamoDS/Dynamo into AG…
twastvedt Aug 16, 2022
27ccb15
Treat null AST as primitive for update graph execution cycle (#13221)
aparajit-pratap Aug 17, 2022
752c90f
Fix some tests.
twastvedt Aug 17, 2022
882f0b5
Merge branch 'AGD-2199' of https://github.com/DynamoDS/Dynamo into AG…
twastvedt Aug 17, 2022
223deee
Merge branch 'master' into AGD-2199
twastvedt Aug 17, 2022
f0b7445
Revert template change.
twastvedt Aug 18, 2022
86c439d
Fix comment text.
twastvedt Aug 18, 2022
7f74e9e
Localize output description.
twastvedt Aug 18, 2022
1ba123d
Add documentation.
twastvedt Aug 18, 2022
ae35692
Reduce property visibility.
twastvedt Aug 18, 2022
7a5992b
Fix inline if format.
twastvedt Aug 18, 2022
735d0c4
Docs.
twastvedt Aug 18, 2022
80ad1d1
Reduce whitespace.
twastvedt Aug 18, 2022
24e8014
Docs fix.
twastvedt Aug 18, 2022
45047e7
Naming fixes.
twastvedt Aug 18, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
206 changes: 103 additions & 103 deletions src/Libraries/CoreNodeModels/CoreNodeModels.csproj
Original file line number Diff line number Diff line change
@@ -1,105 +1,105 @@
<Project Sdk="Microsoft.NET.Sdk">
<ImportGroup Label="PropertySheets">
<Import Project="$(SolutionDir)Config\CS_SDK.props" />
</ImportGroup>
<PropertyGroup>
<ProjectGuid>{D8262D40-4880-41E4-91E4-AF8F480C8637}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>CoreNodeModels</RootNamespace>
<AssemblyName>CoreNodeModels</AssemblyName>
<OutputPath>$(OutputPath)\nodes\</OutputPath>
<DocumentationFile>$(OutputPath)\CoreNodeModels.XML</DocumentationFile>
</PropertyGroup>
<ItemDefinitionGroup>
<ReferenceCopyLocalPaths>
<!--Copy all assembly references to the OutputPath parent dir (/nodes/../) -->
<DestinationSubDirectory>..\</DestinationSubDirectory>
</ReferenceCopyLocalPaths>
</ItemDefinitionGroup>
<ItemGroup>
<None Remove="CoreNodeModelsImages.resources" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="ncalc" Version="1.3.8">
<GeneratePathProperty>true</GeneratePathProperty>
<!--Exclude copying the runtime dlls because we will handle it in the BinaryCompatibilityOps target -->
<ExcludeAssets>runtime</ExcludeAssets>
</PackageReference>
<PackageReference Include="Newtonsoft.Json" Version="8.0.3" />
<Reference Include="System.Web" />
<ProjectReference Include="..\..\DynamoCore\DynamoCore.csproj">
<Project>{7858fa8c-475f-4b8e-b468-1f8200778cf8}</Project>
<Name>DynamoCore</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\DynamoUtilities\DynamoUtilities.csproj">
<Project>{b5f435cb-0d8a-40b1-a4f7-5ecb3ce792a9}</Project>
<Name>DynamoUtilities</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\Engine\ProtoCore\ProtoCore.csproj">
<Project>{7a9e0314-966f-4584-baa3-7339cbb849d1}</Project>
<Name>ProtoCore</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\NodeServices\DynamoServices.csproj">
<Project>{ef879a10-041d-4c68-83e7-3192685f1bae}</Project>
<Name>DynamoServices</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\CoreNodes\CoreNodes.csproj">
<Project>{87550b2b-6cb8-461e-8965-dfafe3aafb5c}</Project>
<Name>CoreNodes</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\DynamoConversions\DynamoConversions.csproj">
<Project>{c5adc05b-34e8-47bf-8e78-9c7bf96418c2}</Project>
<Name>DynamoConversions</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\VMDataBridge\VMDataBridge.csproj">
<Project>{ccb6e56b-2da1-4eba-a1f9-e8510e129d12}</Project>
<Name>VMDataBridge</Name>
<Private>False</Private>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Compile Update="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Update="Properties\Resources.en-US.Designer.cs">
twastvedt marked this conversation as resolved.
Show resolved Hide resolved
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.en-US.resx</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Update="Properties\Resources.resx">
<Generator>PublicResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
<EmbeddedResource Update="Properties\Resources.en-US.resx">
<Generator>PublicResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.en-US.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
<Target Name="BinaryCompatibilityOps" BeforeTargets="Build">
<Copy SourceFiles="$(PkgNCalc)\lib\NCalc.dll" DestinationFolder="$(OutputPath)" />
</Target>
<Target Name="GenerateFiles" AfterTargets="Build" Condition=" '$(OS)' != 'Unix' ">
<!-- Get System.Drawing.dll -->
<GetReferenceAssemblyPaths TargetFrameworkMoniker=".NETFramework, Version=$(ResourceGeneration_FrameworkVersion)">
<Output TaskParameter="FullFrameworkReferenceAssemblyPaths" PropertyName="FrameworkAssembliesPath" />
</GetReferenceAssemblyPaths>
<!-- Get assembly -->
<GetAssemblyIdentity AssemblyFiles="$(OutDir)$(TargetName).dll">
<Output TaskParameter="Assemblies" ItemName="AssemblyInfo" />
</GetAssemblyIdentity>
<!-- Generate customization dll -->
<GenerateResource SdkToolsPath="$(TargetFrameworkSDKToolsDirectory)" UseSourcePath="true" Sources="$(ProjectDir)CoreNodeModelsImages.resx" OutputResources="$(ProjectDir)CoreNodeModelsImages.resources" References="$(FrameworkAssembliesPath)System.Drawing.dll" />
<AL SdkToolsPath="$(TargetFrameworkSDKToolsDirectory)" TargetType="library" EmbedResources="$(ProjectDir)CoreNodeModelsImages.resources" OutputAssembly="$(OutDir)CoreNodeModels.customization.dll" Version="%(AssemblyInfo.Version)" />
</Target>
<ImportGroup Label="PropertySheets">
LongNguyenP marked this conversation as resolved.
Show resolved Hide resolved
<Import Project="$(SolutionDir)Config\CS_SDK.props"/>
</ImportGroup>
<PropertyGroup>
<ProjectGuid>{D8262D40-4880-41E4-91E4-AF8F480C8637}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>CoreNodeModels</RootNamespace>
<AssemblyName>CoreNodeModels</AssemblyName>
<OutputPath>$(OutputPath)\nodes\</OutputPath>
<DocumentationFile>$(OutputPath)\CoreNodeModels.XML</DocumentationFile>
</PropertyGroup>
<ItemDefinitionGroup>
<ReferenceCopyLocalPaths>
<!--Copy all assembly references to the OutputPath parent dir (/nodes/../) -->
<DestinationSubDirectory>..\</DestinationSubDirectory>
</ReferenceCopyLocalPaths>
</ItemDefinitionGroup>
<ItemGroup>
<None Remove="CoreNodeModelsImages.resources"/>
</ItemGroup>
<ItemGroup>
<PackageReference Include="ncalc" Version="1.3.8">
<GeneratePathProperty>true</GeneratePathProperty>
<!--Exclude copying the runtime dlls because we will handle it in the BinaryCompatibilityOps target -->
<ExcludeAssets>runtime</ExcludeAssets>
</PackageReference>
<PackageReference Include="Newtonsoft.Json" Version="8.0.3"/>
<Reference Include="System.Web"/>
<ProjectReference Include="..\..\DynamoCore\DynamoCore.csproj">
<Project>{7858fa8c-475f-4b8e-b468-1f8200778cf8}</Project>
<Name>DynamoCore</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\DynamoUtilities\DynamoUtilities.csproj">
<Project>{b5f435cb-0d8a-40b1-a4f7-5ecb3ce792a9}</Project>
<Name>DynamoUtilities</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\Engine\ProtoCore\ProtoCore.csproj">
<Project>{7a9e0314-966f-4584-baa3-7339cbb849d1}</Project>
<Name>ProtoCore</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\NodeServices\DynamoServices.csproj">
<Project>{ef879a10-041d-4c68-83e7-3192685f1bae}</Project>
<Name>DynamoServices</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\CoreNodes\CoreNodes.csproj">
<Project>{87550b2b-6cb8-461e-8965-dfafe3aafb5c}</Project>
<Name>CoreNodes</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\DynamoConversions\DynamoConversions.csproj">
<Project>{c5adc05b-34e8-47bf-8e78-9c7bf96418c2}</Project>
<Name>DynamoConversions</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\VMDataBridge\VMDataBridge.csproj">
<Project>{ccb6e56b-2da1-4eba-a1f9-e8510e129d12}</Project>
<Name>VMDataBridge</Name>
<Private>False</Private>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Compile Update="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Update="Properties\Resources.en-US.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.en-US.resx</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Update="Properties\Resources.resx">
<Generator>PublicResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
<EmbeddedResource Update="Properties\Resources.en-US.resx">
<Generator>PublicResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.en-US.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
<Target Name="BinaryCompatibilityOps" BeforeTargets="Build">
<Copy SourceFiles="$(PkgNCalc)\lib\NCalc.dll" DestinationFolder="$(OutputPath)"/>
</Target>
<Target Name="GenerateFiles" AfterTargets="Build" Condition=" '$(OS)' != 'Unix' ">
<!-- Get System.Drawing.dll -->
<GetReferenceAssemblyPaths TargetFrameworkMoniker=".NETFramework, Version=$(ResourceGeneration_FrameworkVersion)">
<Output TaskParameter="FullFrameworkReferenceAssemblyPaths" PropertyName="FrameworkAssembliesPath"/>
</GetReferenceAssemblyPaths>
<!-- Get assembly -->
<GetAssemblyIdentity AssemblyFiles="$(OutDir)$(TargetName).dll">
<Output TaskParameter="Assemblies" ItemName="AssemblyInfo"/>
</GetAssemblyIdentity>
<!-- Generate customization dll -->
<GenerateResource SdkToolsPath="$(TargetFrameworkSDKToolsDirectory)" UseSourcePath="true" Sources="$(ProjectDir)CoreNodeModelsImages.resx" OutputResources="$(ProjectDir)CoreNodeModelsImages.resources" References="$(FrameworkAssembliesPath)System.Drawing.dll"/>
<AL SdkToolsPath="$(TargetFrameworkSDKToolsDirectory)" TargetType="library" EmbedResources="$(ProjectDir)CoreNodeModelsImages.resources" OutputAssembly="$(OutDir)CoreNodeModels.customization.dll" Version="%(AssemblyInfo.Version)"/>
</Target>
</Project>
165 changes: 165 additions & 0 deletions src/Libraries/CoreNodeModels/CustomSelectionItem.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,165 @@
using System;
using System.ComponentModel;
using System.Windows.Input;
using Newtonsoft.Json;

namespace CoreNodeModels
{
/// <summary>
/// Represents an Enum item
/// </summary>
public class CustomSelectionItem
LongNguyenP marked this conversation as resolved.
Show resolved Hide resolved
saintentropy marked this conversation as resolved.
Show resolved Hide resolved
{
public string Name { get; set; }
LongNguyenP marked this conversation as resolved.
Show resolved Hide resolved

public string Value { get; set; }

public CustomSelectionItem()
LongNguyenP marked this conversation as resolved.
Show resolved Hide resolved
{

}
}


public class CustomSelectionItemViewModel : INotifyPropertyChanged, IDataErrorInfo
LongNguyenP marked this conversation as resolved.
Show resolved Hide resolved
{
private readonly CustomSelectionItem customSelectionItem;

public event PropertyChangedEventHandler PropertyChanged;

#region Properties

[JsonIgnore]
LongNguyenP marked this conversation as resolved.
Show resolved Hide resolved
public Func<CustomSelectionItem, bool> IsUnique { get; set; }

LongNguyenP marked this conversation as resolved.
Show resolved Hide resolved
[JsonIgnore]
public Action ItemChanged { get; set; }

[JsonIgnore]
public Action<CustomSelectionItemViewModel> RemoveRequested { get; set; }

public string Name
{
get
{
return customSelectionItem.Name;
}
set
{
customSelectionItem.Name = value;

OnPropertyChanged("Name");
LongNguyenP marked this conversation as resolved.
Show resolved Hide resolved
OnPropertyChanged("IsValid");

if (ItemChanged != null)
ItemChanged();
}
}

public string Value
{
get
{
return customSelectionItem.Value;
}
set
{
customSelectionItem.Value = value;
OnPropertyChanged("Value");

if (ItemChanged != null)
LongNguyenP marked this conversation as resolved.
Show resolved Hide resolved
ItemChanged();
}
}

[JsonIgnore]
public bool IsValid
{
get
{
if (string.IsNullOrWhiteSpace(Name))
return false;

if (IsUnique != null && !IsUnique(customSelectionItem))
return false;

return true;
}
}

#endregion

#region IDataErrorInfo

[JsonIgnore]
public string Error
{
get
{
return string.Empty;
}
}

[JsonIgnore]
public string this[string columnName]
{
get
{
if (columnName.Equals("Name"))
{
if (string.IsNullOrWhiteSpace(Name))
return "Name cannot be empty";
LongNguyenP marked this conversation as resolved.
Show resolved Hide resolved
else if (IsUnique != null && !IsUnique(customSelectionItem))
return "Name must be unique";
}

return string.Empty;
}
}

#endregion

#region Commands

[JsonIgnore]
public ICommand RemoveCommand { get; private set; }

#endregion

#region Public logic

public CustomSelectionItemViewModel()
{
customSelectionItem = new CustomSelectionItem();
RemoveCommand = new RelayCommand(RemoveCommandExecute);
}

public CustomSelectionItemViewModel(CustomSelectionItem customSelectionItem)
{
if (customSelectionItem == null)
throw new ArgumentException("enumItem cannot be null");

this.customSelectionItem = customSelectionItem;
RemoveCommand = new RelayCommand(RemoveCommandExecute);
}

public void RemoveCommandExecute(object param)
{
if (RemoveRequested != null)
RemoveRequested(this);
}

public void Validate()
{
OnPropertyChanged("Name");
}

protected void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
LongNguyenP marked this conversation as resolved.
Show resolved Hide resolved
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}

#endregion
}
}
Loading