如何在 Avalonia 中绑定颜色

Posted

技术标签:

【中文标题】如何在 Avalonia 中绑定颜色【英文标题】:How to bind color in Avalonia 【发布时间】:2017-11-03 02:00:42 【问题描述】:

在 WPF 中,如何将颜色(例如背景颜色)绑定到 viewmodel 属性有点令人困惑。

还有其他方法可以在 Avalonia 中绑定颜色吗?

或者这个例子是个好方法?

阿瓦隆尼亚景观

<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>

Avalonia 视图模型

public class MainWindowViewModel

    private IBrush _textbox3Foreground;

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

    public MainWindowViewModel()
    
         Textbox3Foreground = Brushes.DarkOliveGreen;            
    

【问题讨论】:

【参考方案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>

一般来说,您通常不会在视图模型中定义与 UI 相关的内容,例如颜色。这类东西通常直接在视图中定义,没有任何绑定。但是您当然可以像这样绑定到Brush 属性。

【讨论】:

谢谢,我明白了。我只是在玩avalonia,太棒了!

以上是关于如何在 Avalonia 中绑定颜色的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Avalonia 应用程序中为 OpenFolderDialog 设置标题?

如何在 Avalonia 中扩展控制?

Avalonia:如何使用代码为路径中的点设置动画

如何在代码中制作与 Avalonia UI 兼容的位图?

一起学习Avalonia(十二)

一起学习Avalonia(十二)