如何在 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 中绑定颜色的主要内容,如果未能解决你的问题,请参考以下文章