【问题标题】:How to bind viewmodel property to Template property如何将视图模型属性绑定到模板属性
【发布时间】:2018-02-22 17:12:29
【问题描述】:

我在 ViewModel 中有集合,在集合中我有属性名称和颜色。我需要将颜色属性绑定到模板 fill.x:key="model" 是为 ViewModel 提供的

在 C# 中:

public class Model
{
public string Name;
public Color Color;
}

public ViewModel
{
 public ObservableCollection<Model> Models { get; set; }
        public MapViewModel()
        {
            this.Models = new ObservableCollection<Model>();
            this.Models.Add(new Model() { Name = "Prabhu",Color = Colors.Red });
            this.Models.Add(new Model() { Name = "raji",Color = Colors.Green });
            this.Models.Add(new Model() { Name = "Pranov",Color = Colors.Black });
        }

}

在 XAML 中:

         <DataTemplate>
           <Path   Data="F1M1433.97,-17.992L1401.97,-49.992 1433.97,-81.992 1465.97,-49.992 1433.97,-17.992z"  Fill="{Binding Data.model }/>
         </DataTemplate>

需要用到转换器吗?

【问题讨论】:

  • 您是否遇到任何错误?
  • 颜色未应用到路径
  • 你能提供MCVE吗?
  • 你的 DataTemplate 的 DataContext 是什么?模板是如何应用的?

标签: c# wpf data-binding


【解决方案1】:

Fill 属性的类型是 Brush,而不是 Color。您想要的是将Model.Color 属性类型更改为Brush 或分配SolidColorBrush

<Path ...>
    <Path.Fill>
        <SolidColorBrush Color="{Binding Color}"/>
    </Path.Fill>
</Path>

还要确保使用属性,而不是字段:

public class Model
{
    public string Name { get; set; }
    public Color Color { get; set; }
}

【讨论】:

  • 它不起作用。在颜色中绑定什么?我只需要正确的绑定路径
【解决方案2】:
<Path   Data="F1M1433.97,-17.992L1401.97,-49.992 1433.97,-81.992 1465.97,-49.992 1433.97,-17.992z"  Fill="{Binding Data.Color }/>

当颜色绑定到填充时有效

【讨论】:

  • 如果颜色是画笔,这将起作用,即public Brush Color { get; set; }
猜你喜欢
  • 1970-01-01
  • 2010-12-02
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多