WinUI3之窗口初探

memetao 于 2024-03-11 发布

窗口

微软的文档

属于Microsoft.UI.Xaml命名空间

[Microsoft.UI.Xaml.Markup.ContentProperty(Name="Content")]
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public class Window

勾八微软什么东西都没说呀, 怎么用呢?

var window = new Window();
window.Content = new TextBlock() { Text = "Hello" };
window.Activate();

给窗口内容糊一个导航栏

首先先建立一个Page作为窗口的内容。

Page

微软的文档中说 Page主要是搭配着Frame Control来使用(导航)。

这样子可以建立一个简单的Page:

<Page
    x:Class="fdesk.BlankPage1" 
    ...>
    <Grid>
        <Button>hello world!</Button>
    </Grid>
</Page>

嵌入到窗口中:

protected override void OnLaunched(Microsoft.UI.Xaml.LaunchActivatedEventArgs args) {
    m_window = new MainWindow();
    m_window.Content = new BlankPage1();
    m_window.Activate();
}

嘿嘿,还是挺简单的。

微软的文档说NavigationView就是个容器, 有header、menu pane等东西。

改一下刚才的Page内容如下:

<Page
    x:Class="fdesk.BlankPage1"
    ...>
    <NavigationView>
    </NavigationView>
</Page>

是一个空白的NavigationView png

NavigationView的属性巨多,不能一一介绍,用到一个摘记一个吧。

我们来看看这个View上面有哪些item。

AutoSuggestBox

<NavigationView.AutoSuggestBox>
        <AutoSuggestBox
                x:Name="controlsSearchBox"
                MinWidth="100"
                VerticalAlignment="Center"
                x:FieldModifier="public"
                KeyboardAcceleratorPlacementMode="Hidden"
                PlaceholderText="Search"
                QueryIcon="Find"
                QuerySubmitted="OnControlsSearchBoxQuerySubmitted"
                TextChanged="OnControlsSearchBoxTextChanged">
            <AutoSuggestBox.KeyboardAccelerators>
                <KeyboardAccelerator
                        Key="F"
                        Invoked="CtrlF_Invoked"
                        Modifiers="Control" />
            </AutoSuggestBox.KeyboardAccelerators>
        </AutoSuggestBox>
</NavigationView.AutoSuggestBox>

看看就好了, 好像用处不大。

微软的文档说这个就是导航栏的菜单中具体的item。

比如,我们在导航栏中添加一个Home:

<NavigationView.MenuItems>
    <NavigationViewItem x:Name="Home" AutomationProperties.AutomationId="Home" Content="Home" Icon="Home"/>
</NavigationView.MenuItems>

png

嘿嘿,还挺好看的。

微软的文档说, 当Item改变时(点击了一个item)这个回调就是被调用。