UNO Material BottomNavigationBar Event Handler

134 views Asked by At

I am implementing the BottomNavigationBar from Uno.Material in my app. I can get the bar to appear like I want it to- but can not figure out what the event handler is for when I click on a bottomnavigationbaritem to change it. I have tried ItemInvoked, OnPressed, OnTouch, OnClick, Clicked- but not able to get it to work. I am a bit embarrassed to ask- but would someone be able to point me in the right direction of what event is fired and what the method signature of the event should be?

... <controls:BottomNavigationBar x:Name="BottomNavBar" Grid.Row="2"mOnClick="BottomNavView_ItemInvoked"> ...

1

There are 1 answers

1
matfillion On BEST ANSWER

BottomNavigationBar does not expose an ItemInvoked event. You can retrieve the current selection via the SelectedItem property. I suppose it could also offer a ItemInvoked option like NavigationView is offering, feel free to open an issue here with your suggestion.

However, BottomNavigationBarItem is a ToggleButton, so it implements the Click, Checked and Unchecked events already.

Here's an example of how you could handle those events in your app. (You probably only need Checked, depending on your scenario)

<controls:BottomNavigationBar>
    <controls:BottomNavigationBar.Items>

        <controls:BottomNavigationBarItem Label="Favorites"
                                          Click="OnClick"
                                          Checked="OnChecked"
                                          Unchecked="OnUnChecked">
            <controls:BottomNavigationBarItem.Icon>
                <SymbolIcon Symbol="Favorite" />
            </controls:BottomNavigationBarItem.Icon>
        </controls:BottomNavigationBarItem>
[...insert more items...]
    </controls:BottomNavigationBar.Items>
</controls:BottomNavigationBar>
public void OnClick(object sender, object args)
{
    var navBarItem = sender as BottomNavigationBarItem;

    // Add logic here
}

public void OnChecked(object sender, object args)
{
    var navBarItem = sender as BottomNavigationBarItem;

    // Add logic here
}

public void OnUnChecked(object sender, object args)
{
    // Items are automatically unchecked when another one is checked.
    var navBarItem = sender as BottomNavigationBarItem;

    // Add logic here
}