我有两个不同的面板,如
当我点击第一个按钮时,它应该显示一些文本,第二个按钮应该显示一个数据网格,依此类推。
如何更改右侧面板的元素以实现此目的。最初我只使用不同的窗口。有没有办法将它们调用到面板中?然后我虽然根据点击的按钮隐藏元素,但这看起来像一团糟。我应该在单击按钮时编码元素吗?通常如何添加此功能?我需要学习哪些概念来实现它?
答案 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页面。那么你只需要使用控件的可见性