Pluguins.Forms.Button.Circle нажал проблему - PullRequest
0 голосов
/ 22 января 2019

Я работаю с Plugins.Forms.ButtonCircle в сетке, я добавляю кнопки в коде:

for(int index = 0; index < _viewModel.NumButtons; index++)
            {
                ButtonCircle.FormsPlugin.Abstractions.CircleButton b;
                if (_viewModel.SelectedIndex == index)
                {
                    b = new ButtonCircle.FormsPlugin.Abstractions.CircleButton()
                    {
                        ClassId = index.ToString(),
                        BorderColor = Color.Black,
                        BackgroundColor = Color.FromHex(_viewModel.AvailableColors[index]),
                        HeightRequest = 20,
                        WidthRequest = 20,

                    };
                }
                else
                {
                    b = new ButtonCircle.FormsPlugin.Abstractions.CircleButton()
                    {
                        ClassId = index.ToString(),
                        BorderColor = Color.Black,
                        Margin = 0,
                        BorderThickness = 0,
                        Image = "rsz_not_visible.png",
                        BackgroundColor = Color.FromHex(_viewModel.AvailableColors[index]),
                        HeightRequest = 20,
                        WidthRequest = 20,

                    };
                }

                b.Clicked += OnButtonClicked;

                Grid.SetRow(b, 1);
                Grid.SetColumn(b, index);
                Grid.SetRowSpan(b, 1);
                Grid.SetColumnSpan(b, 1);
                ContentGrid.Children.Add(b);
            }

Сетка xaml выглядит так:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         xmlns:oxy="clr-namespace:OxyPlot.Xamarin.Forms;assembly=OxyPlot.Xamarin.Forms"
         xmlns:circbut="clr-namespace:ButtonCircle.FormsPlugin.Abstractions;assembly=ButtonCircle.FormsPlugin.Abstractions"
         x:Class="Llotja.Views.Bar"
         x:Name="BarPage">
<ContentPage.Content>


    <Grid Padding="5,5,0,0"
          x:Name="ContentGrid">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"/>
        </Grid.ColumnDefinitions>

        <Label
            Grid.Row="0"
            Grid.Column="0"
            Grid.RowSpan="1"
            Grid.ColumnSpan="1"
            HorizontalOptions="Center"
            VerticalOptions="Center"
            Text="Setmana:"
            Font="Bold"
            TextColor="#000000"/>

        <Button 
                Grid.Row="0"
                Grid.Column="1"
                Grid.RowSpan="1"
                Grid.ColumnSpan="1"
                x:Name="Left"
                HorizontalOptions="Center"
                VerticalOptions="Center"
                Image="left_arrow.png"
                BackgroundColor="#D60000"
                HeightRequest="25"
                WidthRequest="15"/>
        <Entry
            Grid.Row="0"
            Grid.Column="2"
            Grid.RowSpan="1"
            Grid.ColumnSpan="1"
            x:Name="Entry"
            Text="1"
            Keyboard="Numeric"/>

        <Button 
                Grid.Row="0"
                Grid.Column="3"
                Grid.RowSpan="1"
                Grid.ColumnSpan="1"
                x:Name="Right"
                HorizontalOptions="Center"
                VerticalOptions="Center"
                Image="right_arrow.png"
                BackgroundColor="#D60000"
                HeightRequest="25"
                WidthRequest="15"/>


        <oxy:PlotView 
            Grid.Row="2"
            Grid.RowSpan="2"
            Grid.ColumnSpan="5"

            x:Name="Plot" />
    </Grid>

</ContentPage.Content>

Затем, когда нажимается кнопка, я удаляю фоновое изображение следующим образом:

        if (!aux.Model.Series[Int32.Parse(b.ClassId)].IsVisible)
        {
            b.Image = "rsz_not_visible.png";
        }
        else
        {
            b.Image = null;
        }

Как вы можете видеть объявление, создание кнопки работает нормально, но когда я нажимаю на кнопку, функция добавляет изображение или удаляет его, но показывает прямоугольник на фоне, какое свойство я должен изменить? Проблема в кнопках или в объявлении Grid?

до нажатия

После нажатия

Без фона

1 Ответ

0 голосов
/ 22 января 2019

Причина, по моему мнению, довольно проста: вы предоставляете черную рамку для кнопки "Круг", которая, по моему мнению, может вызывать эту проблему, вы можете попробовать удалить или сделать ее прозрачной?

   new ButtonCircle.FormsPlugin.Abstractions.CircleButton()
                {
                    ClassId = index.ToString(),
                    BorderColor = Color.Black, //// The code is here
                    Margin = 0,
                    BorderThickness = 0,
                    Image = "rsz_not_visible.png",
                    BackgroundColor = Color.FromHex(_viewModel.AvailableColors[index]),
                    HeightRequest = 20,
                    WidthRequest = 20,

                };
...