• Как сменить View в Avalonia?

    @OneCellDM
    Если вы используете MVVM то вот вам мой код

    В коде ViewModel основной формы сделайте обновляемое свойство:
    [Reactive]
      public bool ZipViewModelVisible { get; set; }


    Затем вставьте нужный вам UserControl на форму и свяжите со свойством, у меня это: ZipViewModelVisible

    После изменения значения свойства будет скрываться или показываться UserControl

    <Window xmlns="https://github.com/avaloniaui"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:vm="using:AvaloniaImageCompress.ViewModels"
    	xmlns:view="using:AvaloniaImageCompress.Views"
            xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    	xmlns:b="using:AvaloniaImageCompress.Behaviors"
            mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
            xmlns:idd="clr-namespace:Avalonia.Xaml.Interactions.DragAndDrop;assembly=Avalonia.Xaml.Interactions"
            x:Class="AvaloniaImageCompress.Views.MainWindow"
            Icon="/Assets/avalonia-logo.ico"
    		
            Title="AvaloniaImageCompress" >
    	
        <Design.DataContext>
            <vm:MainWindowViewModel/> 
        </Design.DataContext>
    	<Grid Background="White" >
    		
    
    		<view:ZipView 
    			DataContext="{Binding ZipViewModel}" / Контекст данных
    			IsVisible="{Binding DataContext.ZipViewModelVisible,  / привязка свойства к родительскому  контексту данных
    								RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}"/>
    		
    	</Grid>
    	
    	
    </Window>


    PS: Для обновления свойства используется ReactiveUI.Fody
    Проект с которого был взят данный код
    Ещё один проект с данным подходом
    Ответ написан
    Комментировать
  • Как сделать ссылку на социальные сети в WPF xaml с#?

    @OneCellDM
    Если вы пишите без использования MVVM и вам нужно открывать ссылку в браузере, то решается просто, через обработчик события клика по кнопке.

    XML код формы:
    <Window x:Class="WpfApp1.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
            xmlns:local="clr-namespace:WpfApp1"
            mc:Ignorable="d"
            Title="MainWindow" Height="450" Width="800">
        <Grid>
            <Button x:Name="WButton" Content="GO TO HABR!!" Width="200" Height="50" Click="WButton_Click"/>
        </Grid>
    </Window>


    Программный код самой формы:
    using System;
    using System.Collections.Generic;
    using System.Diagnostics;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;
    
    namespace WpfApp1
    {
    	/// <summary>
    	/// Логика взаимодействия для MainWindow.xaml
    	/// </summary>
    	public partial class MainWindow : Window
    	{
    		public MainWindow()
    		{
    			InitializeComponent();
    		}
    		//Обработчик нажатия на кнопку
    		private void WButton_Click(object sender, RoutedEventArgs e)
    		{
    			//Открытие ссылки при нажатии на кнопку
    			
    			Process.Start(new ProcessStartInfo("URL") { UseShellExecute = true });
    		
    		}
    	}
    }
    Ответ написан
    Комментировать
  • Как разбить число на массив числел?

    @OneCellDM
    using System.Linq;
    string str="12345";
    int[] numbers = str.Select(x => int.Parse(x.ToString())).ToArray();
    Ответ написан
    Комментировать