Microsoft-ui-xaml: Proposta: suporte à ferrugem WinUI 3

Criado em 20 mai. 2020  ·  14Comentários  ·  Fonte: microsoft/microsoft-ui-xaml

A ferrugem está se tornando cada vez mais popular. Ele já pode conduzir o DirectX 12, mas apenas no modo de tela cheia ou através de bibliotecas de interface do usuário que parecem ter sido feitas por engenheiros para engenheiros. Ter suporte WinUI3 para ferrugem permitiria criar aplicativos de ferrugem que parecem modernos e polidos e, sob o capô, desfrutam de todas as vantagens da ferrugem. Isso deixaria engenheiros e marketing felizes, ou seja, viabilizaria essa combinação para aplicativos comerciais.

feature proposal

Comentários muito úteis

winrt-rs talvez seja capaz de alcançar a conexão, mas um engradado winui3-rs explícito que puxa as dependências necessárias e tem um hello world funcional o tornará muito mais acessível.

Todos 14 comentários

Os mapeamentos de idioma parecem já estar trabalhados: https://github.com/microsoft/winrt-rs

winrt-rs talvez seja capaz de alcançar a conexão, mas um engradado winui3-rs explícito que puxa as dependências necessárias e tem um hello world funcional o tornará muito mais acessível.

Isso é (provavelmente) bloqueado por winrt-rs estar estável.

@kennykerr como FYI

A caixa Rust winrt fornece o suporte de projeção e empacotamento de linguagem, comparável ao C++/WinRT com sua extensão VS e suporte a NuGet . Tudo isso é fornecido pelo Rust/WinRT hoje. Está na minha lista adicionar algumas amostras Xaml em breve. Ainda temos algum caminho a percorrer para dar suporte à criação de seus próprios controles Xaml no Rust, mas você já pode criar aplicativos Xaml básicos e estamos trabalhando furiosamente para obter suporte completo ao sistema de tipos.

Eu adoraria ouvir o que mais as pessoas estão procurando. Posso imaginar que se trata mais de fornecer suporte para os tipos de coisas que o compilador Xaml tradicionalmente cuida, mas posso estar errado.

Eu realmente adoraria ver isso acontecer também.
A ferrugem é cada vez mais popular por um motivo. É uma linguagem muito boa, e a Microsoft até disse estar usando ferrugem para construir alguma parte do Windows.
Ter uma estrutura de aplicativo construída em torno da ferrugem significaria desempenho de nível c++, mas com código muito melhor legível e menos bugs de memória.

@kennykerr "Eu adoraria ouvir o que mais as pessoas estão procurando."
a principal motivação era poder ter aplicativos com aparência profissional que fossem escritos o mais nativamente possível em ferrugem. De alguma forma, parece que as pessoas que têm grandes habilidades de design de linguagem não são as mesmas que têm grandes habilidades artísticas de design de widgets de interface do usuário. Portanto, um wrapper em ferrugem para o WIN UI 3 preencheria a divisão. Mas a barreira à entrada é alta quando existem bibliotecas que deveriam fazer o truque, mas não têm nenhum exemplo de como realmente o fazem. Ter um exemplo de olá mundo que une as tecnologias fará com que muito mais pessoas realmente queiram mergulhar e fazer suas próprias derivações dele. Eu pessoalmente adoraria um exemplo de ferrugem usando WIN UI 3 e DirectX12 em um painel dentro do aplicativo WIN UI. Eu não comecei a trabalhar nele, pois parecia difícil quando também estava começando a aprender ferrugem.

Estou ansioso para fazer mais trabalho de GUI no Rust. WinUI soa como o lugar certo para experimentá-lo

@kennykerr "Ter um exemplo de olá mundo que une as tecnologias fará com que muito mais pessoas realmente queiram mergulhar e fazer suas próprias derivações."

Olá mundo é o suficiente para mostrar a interface do usuário. Um exemplo de aplicativo de tarefas mostra algumas interações simples e como as peças se encaixam.

Lembro-me do anúncio sobre .Net MAUI , e estou querendo saber quanto dos fundamentos disso estão no WinUI?

Para mim, a inspiração vem de um framework Rust GUI chamado vgtk.
https://bodil.lol/vgtk/

A sintaxe deste framework é fortemente inspirada na sintaxe jsx do React para construir UI declarativa, e seu modelo de programação é o modelo MVU popular hoje em dia.

Para declarar um aplicativo, você escreve

fn view(&self) -> VNode<Model> {
    gtk! {
        <Application::new_unwrap(None, ApplicationFlags::empty())>
            <Window border_width=20 on destroy=|_| Message::Exit>
                <HeaderBar title="inc!" show_close_button=true />
                <Box spacing=10 halign=Align::Center>
                    <Label label=self.counter.to_string() />
                    <Button label="inc!" image="add" always_show_image=true
                            on clicked=|_| Message::Inc />
                </Box>
            </Window>
        </Application>
    }
}

Isso é muito próximo do jsx, mas ainda mais próximo do XAML, que é perfeito para usar com o WinUI. Essa sintaxe no rust é habilitada pelo recurso de macros procedurais do rust.

Parece-me que esse tipo de estrutura de interface do usuário é a tendência nos dias de hoje e, para que a ferrugem com o WinUI seja bem-sucedida, ele também precisa seguir esse trem. Esse tipo de trabalho foi feito inúmeras vezes e provavelmente é muito fácil para a Microsoft criar um para o WinUI. Também pode ser uma boa chance para uma estrutura de interface do usuário de plataforma cruzada, pois é isso que a comunidade de interfaces gráficas de ferrugem aguarda ansiosamente, mas isso parece estar fora do escopo deste problema.

Algo também digno de nota é que o XAML requer suporte a 'classe parcial', certo? Assim, você pode adicionar controles aos elementos da interface do usuário. O Rust suporta isso? Você poderia imitá-lo com macros procedurais?

Obrigado por todos os comentários! Deixe vir.

@suleyth - a API Xaml não requer classes parciais. Esse é um recurso da linguagem C# que o compilador Xaml usa. Para C++ e agora Rust, estamos explorando uma abordagem completamente diferente que é mais natural para essas linguagens. E sim, macros procedurais são uma ótima maneira de resolver isso no Rust. Nós os usamos extensivamente em winrt-rs .

alguma atualização disso?
Edit: Seria ótimo se houvesse um roteiro para suportar ferrugem com winui

Não posso falar pela equipe WinUI, mas muito do suporte para Rust virá da projeção de linguagem Rust/WinRT ( winrt-rs ). Em particular, agora estou trabalhando para adicionar suporte para definir e implementar tipos COM e WinRT em Rust . Esse é um pré-requisito importante para a integração completa do Xaml. Quando estiver pronto, podemos começar a ver como iluminar o suporte à associação Xaml de forma mais natural no Rust.

Esta página foi útil?
0 / 5 - 0 avaliações