Skip to content

Instantly share code, notes, and snippets.

@darinkes
Created April 10, 2019 07:56
Show Gist options
  • Save darinkes/350b01d1e21f410284abf91c493a2e22 to your computer and use it in GitHub Desktop.
Save darinkes/350b01d1e21f410284abf91c493a2e22 to your computer and use it in GitHub Desktop.
Avalonia Enum UserControl Content Selection
class GuiStateTemplate : DataTemplate, IDataTemplate
{
[TypeConverter(typeof(EnumConverter))]
public GuiState State { get; set; }
bool IDataTemplate.Match(object data)
{
var enumVal = (GuiState)Enum.Parse(typeof(GuiState), data.ToString());
var result = State == enumVal;
Logging.Debug(string.Format("GuiStateTemplate Match: {0} == {1} ({2})", State, enumVal, result));
return result;
}
}
<UserControl Grid.Row="1">
<UserControl.DataTemplates>
<local:GuiStateTemplate State="Searching"><uc:SearchingControl/></local:GuiStateTemplate>
<local:GuiStateTemplate State="Idle"><uc:IdleControl/></local:GuiStateTemplate>
</UserControl.DataTemplates>
<ContentControl Content="{Binding GuiState}"/>
</UserControl>
@Dynesshely
Copy link

I met a problem with this way that avalonia throw error like this:
Unable to find default constructor and no non-default one is specified.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment