我正在使用SplitView应用程序,并且我已经创建了一个托管子页面的Shell。我想要做的是在子页面上有一个按钮,单击该按钮可以操作最初在Shell xaml上启动或创建的对象的可见性。但是,我不确定如何调用更改SplitView上的属性所需的类或框架。
我的层次结构如下:Shell>页面文件夹>子页面
以下是我的Shell.xaml的片段请注意,这只是 SplitView
中包含的部分<SplitView.Pane>
<StackPanel x:Name="SplitViewPanePanel">
<RadioButton x:Name="BackRadioButton" Click="BackRadioButton_Click" Style="{StaticResource NavRadioButtonStyle}" Tag="" Background="Gray" Content="Back" GroupName="Back"/>
<RadioButton x:Name="HamburgerRadioButton"
Click="HamburgerRadioButton_Click"
Style="{StaticResource NavRadioButtonStyle}"
Tag=""
Content="Menu" />
<RadioButton x:Name="HomeRadioButton" Click="HomeRadioButton_Click" Style="{StaticResource NavRadioButtonStyle}" Tag="" Content="Home" GroupName="Navigation"/>
<RadioButton x:Name="TARadioButton" Click="MTRadioButton_Click" Style="{StaticResource NavRadioButtonStyle}" Tag="" Content="Team Assignments" GroupName="Navigation"/>
<RadioButton x:Name="ASRRadioButton" Click="ASRRadioButton_Click" Style="{StaticResource NavRadioButtonStyle}" Tag="" Content="Assignment Switch Requests" GroupName="Navigation"/>
<RadioButton x:Name="MTRadioButton" Click="MTRadioButton_Click" Style="{StaticResource NavRadioButtonStyle}" Tag="" Content="Management Tools" GroupName="Navigation"/>
</StackPanel>
</SplitView.Pane>
以下是Pages文件夹中“主页”页面的代码。
using Team_Management_Hub;
using Team_Management_Hub.Pages;
namespace Team_Management_Hub.Pages
{
public sealed partial class Home : Page
{
public Home()
{
this.InitializeComponent();
}
private void TestButton_Click(object sender, RoutedEventArgs e)
{
//Here is the button I want to be able to click to alter the visibility of the MTRadioButton
}
}
}
我现在已经看了几天关于如何访问父Shell的示例或解释,我似乎无法弄明白。应该注意的是,这是我在Windows 10中的第一个UWP,而且我对C#还不熟悉。
此外,如果它有用或相关,则下面的代码位于我用于导航到各个页面的Shell.xaml.cs文件中。
private void HomeRadioButton_Click(object sender, RoutedEventArgs e)
{
var frame = this.DataContext as Frame;
Page page = frame?.Content as Page;
if (page?.GetType() != typeof(Home))
{
frame.Navigate(typeof(Home));
}
}
更新: 所以,我已经从提供的第一个答案中实现了一些更改,而且我在Shell.xaml文件中的范围似乎有些不正确。
这是我的Shell.xaml文件:
<Page
x:Class="Team_Management_Hub.Shell"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Team_Management_Hub"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:pages="using:Team_Management_Hub.Pages"
mc:Ignorable="d">
<pages:Home MyCoolEvent="OnCoolEvent"/>;
<SplitView x:Name="Team_Management_Hub" Background="Black" OpenPaneLength="240" CompactPaneLength="48"
DisplayMode="CompactOverlay" IsPaneOpen="False" PaneBackground="Gray" Content="{Binding}">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup>
<VisualState x:Name="HardwareButtons">
<VisualState.Setters>
<Setter Target="BackRadioButton.Visibility" Value="Collapsed" />
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<SplitView.Pane>
<StackPanel x:Name="SplitViewPanePanel">
<RadioButton x:Name="BackRadioButton" Click="BackRadioButton_Click" Style="{StaticResource NavRadioButtonStyle}" Tag="" Background="Gray" Content="Back" GroupName="Back"/>
<RadioButton x:Name="HamburgerRadioButton" Click="HamburgerRadioButton_Click" Style="{StaticResource NavRadioButtonStyle}" Tag="" Content="Menu" />
<RadioButton x:Name="HomeRadioButton" Click="HomeRadioButton_Click" Style="{StaticResource NavRadioButtonStyle}" Tag="" Content="Home" GroupName="Navigation"/>
<RadioButton x:Name="TARadioButton" Click="TARadioButton_Click" Style="{StaticResource NavRadioButtonStyle}" Tag="" Content="Team Assignments" GroupName="Navigation"/>
<RadioButton x:Name="ASRRadioButton" Click="ASRRadioButton_Click" Style="{StaticResource NavRadioButtonStyle}" Tag="" Content="Assignment Switch Requests" GroupName="Navigation"/>
<RadioButton x:Name="MTRadioButton" Click="MTRadioButton_Click" Style="{StaticResource NavRadioButtonStyle}" Tag="" Content="Management Tools" GroupName="Navigation"/>
</StackPanel>
</SplitView.Pane>
</SplitView>
这样,<pages:Home MyCoolEvent="OnCoolEvent"/>
下的所有内容都会加下划线蓝色,错误“属性内容设置多次”
我找到了this链接,因此我尝试将其全部放入网格中,但是如果我保留的话,我只需在<Grid>
上方添加<SplitView>
,在最后</SplitView>
下方添加<pages>
在splitview上方的<pages>
部分,Home.xaml页面上的按钮不执行任何操作。如果我将<SplitView>
移动到<Grid></Grid>
以下,但仍在<pages>
按钮内,但SplitView会消失。我还尝试将<StackPanel>
扔到保存我的RadioButtons的<pages:Home>
内,但它做了一些奇怪的事情,看起来我的主页位于按钮下的SplitView窗格内。所以,我确信我在xaml设置的范围内有一些简单的错误,但是我已经尝试了很多将KettleClientEnvironment.init();
TransMeta metaData = new TransMeta("C:\\examplepath\\test.ktr");
Trans transformation = new Trans(metaData);
transformation.execute(null);
transformation.waitUntilFinished();
...
放在很多不同区域和不同控件内的组合,我没有得到它的工作。因此,在正确的布局上提供一些帮助可以很好地完成这项工作。
感谢您的帮助。
答案 0 :(得分:0)
一种非常简单的方法是向您的Home类添加一个事件。单击TestButton时触发事件。然后你会在你的&#34; shell&#34;上听你的活动。页。
示例shell xaml:
<pages:Home MyCoolEvent="OnCoolEvent"/>
示例shell代码
private void OnCoolEvent(object sender, EventArgs args)
{
//alter the visibility of the MTRadioButton
}
家庭代码:
public event EventHandler MyCoolEvent;
private void TestButton_Click(object sender, RoutedEventArgs e)
{
OnMyCoolEvent();
}
protected virtual void OnMyCoolEvent()
{
EventHandler handler = MyCoolEvent;
if (handler != null) handler(this, EventArgs.Empty);
}