Как связать цвет в Авалонии

В WPF было немного сложнее привязать цвета, например цвет фона, к свойству viewmodel.

Есть ли другие способы связать цвета в Авалонии?

Или этот пример хороший способ?

Вид на Авалонию

<Window xmlns="https://github.com/avaloniaui"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:Button.Views.MainWindow"
    Title="Button" Width="700">
  <StackPanel Grid.Column="2" Orientation="Vertical" Gap="8" Margin="10"> 
      <TextBox Name="Textbox3" Text="{Binding Textbox3Text}" Foreground="{Binding Textbox3Foreground}"/>    
  </StackPanel>
</Window>

Авалония ViewModel

public class MainWindowViewModel
{
    private IBrush _textbox3Foreground;

    public IBrush Textbox3Foreground
    {
        get { return _textbox3Foreground; }
        set
        {
            this.RaiseAndSetIfChanged(ref _textbox3Foreground, value);
        }
    }    

    public MainWindowViewModel()
    {
         Textbox3Foreground = Brushes.DarkOliveGreen;            
    }
}

person EinApfelBaum    schedule 01.06.2017    source источник


Ответы (1)


Убедитесь, что вы установили DataContext окна на экземпляр класса вашей модели представления:

<Window xmlns="https://github.com/avaloniaui"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:Button.Views.MainWindow"
    Title="Button" Width="700">
    <Window.DataContext>
        <local:MainWindowViewModel />
    </Window.DataContext>
    <StackPanel Grid.Column="2" Orientation="Vertical" Gap="8" Margin="10">
        <TextBox Name="Textbox3" Text="{Binding Textbox3Text}" Foreground="{Binding Textbox3Foreground}"/>
    </StackPanel>
</Window>

В общем, вы обычно не определяете вещи, связанные с пользовательским интерфейсом, такие как цвета, в модели представления. Такие вещи обычно определяются непосредственно в представлении без каких-либо привязок. Но вы, безусловно, можете выполнить привязку к подобному свойству Brush.

person mm8    schedule 01.06.2017
comment
Спасибо, я понял. Я просто играюсь с авалонией, это здорово! - person EinApfelBaum; 02.06.2017