根据点击的按钮添加不同的元素

时间:2014-05-30 05:26:15

标签: c# wpf xaml wpf-controls

我有两个不同的面板,如

enter image description here

当我点击第一个按钮时,它应该显示一些文本,第二个按钮应该显示一个数据网格,依此类推。

如何更改右侧面板的元素以实现此目的。最初我只使用不同的窗口。有没有办法将它们调用到面板中?然后我虽然根据点击的按钮隐藏元素,但这看起来像一团糟。我应该在单击按钮时编码元素吗?通常如何添加此功能?我需要学习哪些概念来实现它?

2 个答案:

答案 0 :(得分:1)

在遇到这个问题并看到你提供的绝对差的答案后,我觉得有必要给你一个体面的答案。有许多不同的方法可以满足您的要求。这可能是最简单的方法:

Grid中声明一个MainWindow,在左侧显示您的三个Button,在右侧显示三个可能的控件:

<Grid>
    <Grid.Resources>
        <Style x:Key="ButtonStyle" TargetType="{x:Type ToggleButton}">
            <Setter Property="Width" Value="150" />
            <Setter Property="Height" Value="40" />
            <Setter Property="Content" Value="Button" />
        </Style>
    </Grid.Resources>
    <Grid.RowDefinitions>
        <RowDefinition />
        <RowDefinition />
        <RowDefinition />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="3*" />
    </Grid.ColumnDefinitions>
    <ToggleButton Grid.Row="0" Name="Button1" Style="{StaticResource ButtonStyle}" />
    <ToggleButton Grid.Row="1" Name="Button2" Style="{StaticResource ButtonStyle}" />
    <ToggleButton Grid.Row="2" Name="Button3" Style="{StaticResource ButtonStyle}" />
    <TextBlock Grid.Column="1" Grid.Row="0" Name="TextBlock" Text="Here is some text" 
        HorizontalAlignment="Center" VerticalAlignment="Center" Visibility="{Binding 
        IsChecked, ElementName=Button1, Converter={StaticResource 
        BooleanToVisibilityConverter}}" />
    <Rectangle Grid.Column="1" Grid.Row="1" Name="Rectangle" Width="150" Height="40" 
        Fill="LightGreen" Stroke="Black" Visibility="{Binding IsChecked, ElementName=
        Button2, Converter={StaticResource BooleanToVisibilityConverter}}" />
    <RadioButton Grid.Column="1" Grid.Row="2" Name="RadioButton" Content="Here is an 
        option" HorizontalAlignment="Center" VerticalAlignment="Center" Visibility="{
        Binding IsChecked, ElementName=Button3, Converter={StaticResource 
        BooleanToVisibilityConverter}}" />
</Grid>

请注意,我在这里使用ToggleButton只是因为它们具有bool IsChecked属性,在单击它们时设置该属性并可用于显示和隐藏右侧的控件。为此,我们使用BooleanToVisibilityConverter(在.NET 4.5中引入.NET Framework)将bool ToggleButton.IsChecked属性值转换为Visibility值。

现在这个例子可能并不完全是你想到的,但我确信它会为你提供足够的实例来试验并提出你想要的UI ......记住也必须做一些工作。

答案 1 :(得分:-2)

使用Textbox,DataGrid和TextBox2的所有视图创建Xaml页面。那么你只需要使用控件的可见性