我现在很困,我会解释我的问题和我想要的。 在我的解决方案中,我有 mainWindow ,在 MainWindow 中,我调用第一个userControl 谁位于 userControlLibrary 即可。我是一个带按钮的菜单。我想当我点击第一个userControl的第一个按钮时,我希望将第二个用户控件的可见性设置为可见(也位于 userControlLibrary )。但我尝试了很多东西,但没有人工作。
第一个userControl是 UC_MenuSlider , UC_Start_Study 是第二个在点击第一个按钮后必须可见的人。发布时 UC_Start_Study隐藏。
这是我的主窗口的代码的一部分:
<Grid Name="MainGrid">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<UserControlLibrary:UC_StartStudy x:Name="UC_Start_Study" Grid.Column="1" Height="Auto" Width="Auto" Margin="70 0 0 0" Visibility="Hidden"/>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.1*" MaxWidth="240" MinWidth="240" />
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<UserControlLibrary:UC_MenuSlider x:Name="UC_MenuSlider" Grid.Column="0"/>
</Grid>
</Grid>
我的第一个 UserControl(UC_MenuSlider)代码的一部分:
<Grid Name="Grid_Menu" HorizontalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Button x:Name="Start_Study" Grid.Row="0" Grid.Column="0" Margin="0" Content="Start Study" FontSize="16" Click="Start_Study_Click">
</Button>
</Grid>
首先是一个基本事件,只是在我的第一个userControl中点击一个事件。代码背后是这样的:
public void Start_Study_Click(object sender, RoutedEventArgs e)
{
var startStudy = new UserControlLibrary.UC_StartStudy();
startStudy.Visibility = Visibility.Visible;
}
不行。然后我使用'RoutedEvent'但我真的不明白它的工作原理。
我希望我的问题足够清楚,先谢谢你的问题
答案 0 :(得分:0)
问题是因为您要创建新的UC_StartStrudy
并将其Visibility
设置为Visible
。您真正需要的是设置Visibility
中XAML
的{{1}} UC_Start_Study
public void Start_Study_Click(object sender, RoutedEventArgs e)
{
UC_Start_Study.Visibility = Visibility.Visible;
}
您还可以使用XAML数据绑定Visibility
的{{1}}属性,并在代码中设置其值:
XAML:
UC_StartStrudy
代码(记得实施INotifyPropertyChanged
):
<Window.Resourses>
<BooleanToVisibilityConverter x:Key="BooltoVisible" />
</Window.Resourse>
.....
<UserControlLibrary:UC_StartStudy x:Name="UC_Start_Study" Grid.Column="1" Height="Auto" Width="Auto" Margin="70 0 0 0" Visibility="{Binding IsUCStartStudyVisible, Converter={StaticResource BooltoVisible}}"/>
答案 1 :(得分:0)
我不明白你为什么要使用UC_StartStudy()的新实例,因为你已经在MainWindow中添加了它。
您不能简单地将UC_Start_Study的可见性视为代码中可见的。
让我告诉你如何做到这一点。 试试
public void Start_Study_Click(object sender, RoutedEventArgs e)
{
this.UC_Start_Study.Visibility = Visibility.Visible;
}