Skip to content

Instantly share code, notes, and snippets.

@wieslawsoltes
Created August 9, 2017 13:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wieslawsoltes/be3fcf4bccaed1aa21eafd0cb38b21b8 to your computer and use it in GitHub Desktop.
Save wieslawsoltes/be3fcf4bccaed1aa21eafd0cb38b21b8 to your computer and use it in GitHub Desktop.
Avalonia issue setting CheckBox.IsChecked does not update UI with .NET Framework 4.6.1, working on .NET Core
<UserControl xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<StackPanel Orientation="Vertical" Gap="4">
<TextBlock Classes="h1">Menu</TextBlock>
<TextBlock Classes="h2">A window menu</TextBlock>
<StackPanel Orientation="Horizontal"
Margin="0,16,0,0"
HorizontalAlignment="Center"
Gap="16">
<Menu>
<MenuItem Header="_First">
<MenuItem Header="Standard _Menu Item"/>
<Separator/>
<MenuItem Header="Menu with _Submenu">
<MenuItem Header="Submenu _1"/>
<MenuItem Header="Submenu _2"/>
</MenuItem>
<MenuItem Header="Menu Item with _Icon">
<MenuItem.Icon>
<Image Source="resm:ControlCatalog.Assets.github_icon.png"/>
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="Menu Item with _Checkbox">
<MenuItem.Icon>
<CheckBox BorderThickness="0" IsHitTestVisible="False" IsChecked="True"/>
</MenuItem.Icon>
</MenuItem>
</MenuItem>
<MenuItem Header="_Second">
<MenuItem Header="Second _Menu Item"/>
</MenuItem>
<MenuItem Header="_Debug">
<MenuItem Header="DrawDirtyRects" x:Name="DebugDrawDirtyRects">
<MenuItem.Icon>
<CheckBox BorderThickness="0" IsHitTestVisible="False" IsChecked="False" x:Name="DebugDrawDirtyRectsCheckBox"/>
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="DrawFps" x:Name="DebugDrawFps">
<MenuItem.Icon>
<CheckBox BorderThickness="0" IsHitTestVisible="False" IsChecked="False" x:Name="DebugDrawFpsCheckBox"/>
</MenuItem.Icon>
</MenuItem>
</MenuItem>
</Menu>
</StackPanel>
</StackPanel>
</UserControl>
using Avalonia.Controls;
using Avalonia.Interactivity;
using Avalonia.Markup.Xaml;
namespace ControlCatalog.Pages
{
public class MenuPage : UserControl
{
public MenuPage()
{
this.InitializeComponent();
this.InitializeControl();
}
private void InitializeComponent()
{
AvaloniaXamlLoader.Load(this);
}
private void InitializeControl()
{
this.FindControl<MenuItem>("DebugDrawDirtyRects").Click += DebugDrawDirtyRects_Click;
this.FindControl<MenuItem>("DebugDrawFps").Click += DebugDrawFps_Click;
}
private void DebugDrawDirtyRects_Click(object sender, RoutedEventArgs e)
{
ToggleDrawDirtyRects();
}
private void DebugDrawFps_Click(object sender, RoutedEventArgs e)
{
ToggleDrawFps();
}
private void ToggleDrawDirtyRects()
{
bool value = !VisualRoot.Renderer.DrawDirtyRects;
VisualRoot.Renderer.DrawDirtyRects = value;
this.FindControl<CheckBox>("DebugDrawDirtyRectsCheckBox").IsChecked = value;
}
private void ToggleDrawFps()
{
bool value = !VisualRoot.Renderer.DrawFps;
VisualRoot.Renderer.DrawFps = value;
this.FindControl<CheckBox>("DebugDrawFpsCheckBox").IsChecked = value;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment