英文:
My app in .net maui isnt openning after write a pair of binding lines
问题
这是你的翻译好的部分:
首先,对不起我的英语。我正在创建一个视图以创建一个新的元素。该元素具有一些常见属性和一些取决于我们在单选按钮中选择的子项的属性。如果选中值为"Serie"的单选按钮,我希望只看到堆栈1(来自系列);如果选中值为"Pelicula"的单选按钮,我希望看到堆栈2(来自电影),依此类推。以下是最后一个可工作的代码:
我在网格的Grid.Column=1内的StackLayout中添加了一些绑定,但它停止工作了。它没有报错,但窗口应用程序甚至没有打开。
请注意,我已将双引号转义为单引号,以适应HTML/XML的格式。
英文:
(first of all, sorry for my english). Im making a view to make a new element. the element have some common attributes and some that depends on the child we choose in the radiobutton. i want to se only the stack 1(from series) if the radio button with Value="Serie" is checked, the stack 2(from movies) if the radio button with Value="Pelicula" is checked and so on. here is the last working code:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:local="clr-namespace:GameVidNet"
             x:Class="GameVidNet.Paginas.NewMediaPage"
             Title="NewMediaPage">
    <Grid>
        
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>
        <StackLayout Padding="20" VerticalOptions="Center" HorizontalOptions="Center" Grid.Column="0" >
            
            <Label Text="Tipo de Media" FontSize="16" />
            <HorizontalStackLayout>
                <RadioButton Value="Serie" Margin="20" >
                    <RadioButton.Content>
                        <Image Source="series.png" HeightRequest="30" WidthRequest="30"/>
                    </RadioButton.Content>
                </RadioButton>
                <RadioButton Value="Pelicula" Margin="20" >
                    <RadioButton.Content>
                        <Image Source="movie.png" HeightRequest="30" WidthRequest="30"/>
                    </RadioButton.Content>
                </RadioButton>
                <RadioButton Value="Videojuego" Margin="20" >
                    <RadioButton.Content>
                        <Image Source="videogame.png" HeightRequest="30" WidthRequest="30"/>
                    </RadioButton.Content>
                </RadioButton>
            </HorizontalStackLayout>
            <Label Text="ID" FontSize="16" />
            <Entry x:Name="IdEntry" Placeholder="Ingrese el ID" />
            <Label Text="Título" FontSize="16" />
            <Entry x:Name="TitleEntry" Placeholder="Ingrese el título" />
            <Label Text="Género" FontSize="16" />
            <Entry x:Name="GenreEntry" Placeholder="Ingrese el género" />
            <Label Text="Año de Lanzamiento" FontSize="16" />
            <Entry x:Name="ReleaseYearEntry" Placeholder="Ingrese el año de lanzamiento" />
            <Button Text="Guardar" Clicked="SaveButton_Clicked" Margin="0,20,0,0" />
            
        </StackLayout>
        
        <StackLayout Grid.Column="1" Padding="20" VerticalOptions="Center" HorizontalOptions="Center">
            <StackLayout >
                <Label Text="Temporadas" FontSize="16" />
                <Entry x:Name="SeasonsEntry" Placeholder="Ingrese el número de temporadas" />
                <Label Text="Duración promedio del episodio" FontSize="16" />
                <Entry x:Name="AverageEpisodeDurationEntry" Placeholder="Ingrese la duración promedio del episodio" />
                <Label Text="Es Anime" FontSize="16" />
                <Switch x:Name="IsAnimeSwitch" />
                <Label Text="Está completado" FontSize="16" />
                <Switch x:Name="IsCompletedSwitch" />
            </StackLayout>
            <StackLayout >
                <Label Text="Duración" FontSize="16" />
                <Entry x:Name="DurationEntry" Placeholder="Ingrese la duración" />
                <Label Text="Edad recomendada" FontSize="16" />
                <Entry x:Name="RecommendedAgeEntry" Placeholder="Ingrese la edad recomendada" />
                <Label Text="Ganador de premios" FontSize="16" />
                <Switch x:Name="AwardWinnerSwitch" />
            </StackLayout>
            <StackLayout >
                <Label Text="Plataformas" FontSize="16" />
                <Entry x:Name="PlatformsEntry" Placeholder="Ingrese las plataformas" />
                <Label Text="Modos de juego" FontSize="16" />
                <Entry x:Name="GameModesEntry" Placeholder="Ingrese los modos de juego" />
                <Label Text="Es original" FontSize="16" />
                <Switch x:Name="IsOriginalSwitch" />
                <Label Text="Está inspirado" FontSize="16" />
                <Switch x:Name="IsInspiredSwitch" />
            </StackLayout>
        </StackLayout>
        
        
    </Grid>
    
</ContentPage>
i put some bindings in the stackslayout inside the stacklayout grid.column=1, and it stops working. it doesnt give me any errors but the window app is not even opening.
<StackLayout Grid.Column="1" Padding="20" VerticalOptions="Center" HorizontalOptions="Center">
            <StackLayout IsVisible="{Binding Source={x:Reference SerieRadioButton}, Path=IsChecked}">
                <Label Text="Temporadas" FontSize="16" />
                <Entry x:Name="SeasonsEntry" Placeholder="Ingrese el número de temporadas" />
                <Label Text="Duración promedio del episodio" FontSize="16" />
                <Entry x:Name="AverageEpisodeDurationEntry" Placeholder="Ingrese la duración promedio del episodio" />
                <Label Text="Es Anime" FontSize="16" />
                <Switch x:Name="IsAnimeSwitch" />
                <Label Text="Está completado" FontSize="16" />
                <Switch x:Name="IsCompletedSwitch" />
            </StackLayout>
            <StackLayout IsVisible="{Binding Source={x:Reference PeliculaRadioButton}, Path=IsChecked}">
                <Label Text="Duración" FontSize="16" />
                <Entry x:Name="DurationEntry" Placeholder="Ingrese la duración" />
                <Label Text="Edad recomendada" FontSize="16" />
                <Entry x:Name="RecommendedAgeEntry" Placeholder="Ingrese la edad recomendada" />
                <Label Text="Ganador de premios" FontSize="16" />
                <Switch x:Name="AwardWinnerSwitch" />
            </StackLayout>
            <StackLayout IsVisible="{Binding Source={x:Reference VideojuegoRadioButton}, Path=IsChecked}">
                <Label Text="Plataformas" FontSize="16" />
                <Entry x:Name="PlatformsEntry" Placeholder="Ingrese las plataformas" />
                <Label Text="Modos de juego" FontSize="16" />
                <Entry x:Name="GameModesEntry" Placeholder="Ingrese los modos de juego" />
                <Label Text="Es original" FontSize="16" />
                <Switch x:Name="IsOriginalSwitch" />
                <Label Text="Está inspirado" FontSize="16" />
                <Switch x:Name="IsInspiredSwitch" />
            </StackLayout>
答案1
得分: 2
I do not know if you understand it, but you are actually writing a TAB control. (RadioButtons controlling the visibility of layouts)
This is how naming a control is done:
x:Name="controlName"
The Value you set here:
<RadioButton Value="Serie" Margin="20" >
does not mean a thing in your case. If you are going to use references, you might as well do all this work instead in the code.
What you should actually do is, make a radio button group:
https://learn.microsoft.com/en-us/dotnet/maui/user-interface/controls/radiobutton
And then use the selected value.
...RadioButtonGroup.SelectedValue="{Binding Selection}">
After you have the selected value, you can approach the "visibility" by different ways:
You can bind it to the selection itself, with using https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/data-binding/converters
Or you can switch between the layouts:
https://learn.microsoft.com/en-us/dotnet/maui/user-interface/layouts/bindablelayout
You might as well search for ready-to-use TabControls.
英文:
I do not know if you understand it, but you are actually writing a TAB control. (RadioButtons controlling the visibility of layouts)
This is how naming a control is done:
 x:Name="controlName"
The Value you set here:
<RadioButton Value="Serie" Margin="20" >
does not mean a thing in your case. If you are going to use references, you might as well do all this work instead in the code.
What you should actually do is, make a radio button group:
https://learn.microsoft.com/en-us/dotnet/maui/user-interface/controls/radiobutton
And then use the selected value.
...RadioButtonGroup.SelectedValue="{Binding Selection}">
After you have the selected value, you can approach the "visibility" by different ways:
You can bind it to the selection itself, with using https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/data-binding/converters
Or you can switch between the layouts:
https://learn.microsoft.com/en-us/dotnet/maui/user-interface/layouts/bindablelayout
You might as well search for ready-to-use TabControls.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。


评论